@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,496 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Quickstart
|
|
3
|
-
description: From-template and manual setup paths to a working LangGraph chat.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
Two paths to a running chat against a LangGraph Cloud server. The template is fastest; the manual path is what you adapt when integrating into an existing project.
|
|
7
|
-
|
|
8
|
-
## From the template
|
|
9
|
-
|
|
10
|
-
<PlatformTabs>
|
|
11
|
-
<Tab value="React">
|
|
12
|
-
|
|
13
|
-
```sh
|
|
14
|
-
npx create-assistant-ui@latest -t langchain my-app
|
|
15
|
-
cd my-app
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
Set environment variables:
|
|
19
|
-
|
|
20
|
-
```sh title=".env.local"
|
|
21
|
-
# LANGCHAIN_API_KEY=your_api_key # production
|
|
22
|
-
# LANGGRAPH_API_URL=your_api_url # production
|
|
23
|
-
NEXT_PUBLIC_LANGGRAPH_API_URL=your_api_url # development (no API key required)
|
|
24
|
-
NEXT_PUBLIC_LANGGRAPH_ASSISTANT_ID=your_graph_id
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
```sh
|
|
28
|
-
npm run dev
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Skip ahead to [streaming](/docs/runtimes/langgraph/streaming) to start adding features.
|
|
32
|
-
|
|
33
|
-
</Tab>
|
|
34
|
-
<Tab value="React Native">
|
|
35
|
-
|
|
36
|
-
There is not a React Native LangGraph template yet. Use the manual setup below in an Expo app.
|
|
37
|
-
|
|
38
|
-
</Tab>
|
|
39
|
-
<Tab value="React Ink">
|
|
40
|
-
|
|
41
|
-
There is not an Ink LangGraph template yet. Use the manual setup below in a Node/Ink app.
|
|
42
|
-
|
|
43
|
-
</Tab>
|
|
44
|
-
</PlatformTabs>
|
|
45
|
-
|
|
46
|
-
## Manual setup in an existing project
|
|
47
|
-
|
|
48
|
-
<Steps>
|
|
49
|
-
<Step>
|
|
50
|
-
|
|
51
|
-
### Install dependencies
|
|
52
|
-
|
|
53
|
-
<PlatformTabs>
|
|
54
|
-
<Tab value="React">
|
|
55
|
-
|
|
56
|
-
<InstallCommand npm={["@assistant-ui/react", "@assistant-ui/react-langgraph", "@langchain/langgraph-sdk"]} />
|
|
57
|
-
|
|
58
|
-
</Tab>
|
|
59
|
-
<Tab value="React Native">
|
|
60
|
-
|
|
61
|
-
<InstallCommand expo={["@assistant-ui/react-native", "@assistant-ui/react-langgraph", "@langchain/langgraph-sdk"]} />
|
|
62
|
-
|
|
63
|
-
</Tab>
|
|
64
|
-
<Tab value="React Ink">
|
|
65
|
-
|
|
66
|
-
<InstallCommand npm={["@assistant-ui/react-ink", "@assistant-ui/react-langgraph", "@langchain/langgraph-sdk", "ink", "react"]} />
|
|
67
|
-
|
|
68
|
-
</Tab>
|
|
69
|
-
</PlatformTabs>
|
|
70
|
-
|
|
71
|
-
</Step>
|
|
72
|
-
<Step>
|
|
73
|
-
|
|
74
|
-
### Create the LangGraph client helper
|
|
75
|
-
|
|
76
|
-
<PlatformTabs>
|
|
77
|
-
<Tab value="React">
|
|
78
|
-
|
|
79
|
-
```ts title="@/lib/chatApi.ts"
|
|
80
|
-
import { Client } from "@langchain/langgraph-sdk";
|
|
81
|
-
|
|
82
|
-
export const createClient = () => {
|
|
83
|
-
const apiUrl =
|
|
84
|
-
process.env["NEXT_PUBLIC_LANGGRAPH_API_URL"] ||
|
|
85
|
-
(typeof window !== "undefined"
|
|
86
|
-
? new URL("/api", window.location.href).href
|
|
87
|
-
: "/api");
|
|
88
|
-
return new Client({ apiUrl });
|
|
89
|
-
};
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
</Tab>
|
|
93
|
-
<Tab value="React Native">
|
|
94
|
-
|
|
95
|
-
```ts title="lib/chatApi.ts"
|
|
96
|
-
import { Client } from "@langchain/langgraph-sdk";
|
|
97
|
-
|
|
98
|
-
export const createClient = () => {
|
|
99
|
-
const apiUrl =
|
|
100
|
-
process.env.EXPO_PUBLIC_LANGGRAPH_API_URL ?? "http://localhost:2024";
|
|
101
|
-
return new Client({ apiUrl });
|
|
102
|
-
};
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
</Tab>
|
|
106
|
-
<Tab value="React Ink">
|
|
107
|
-
|
|
108
|
-
```ts title="lib/chatApi.ts"
|
|
109
|
-
import { Client } from "@langchain/langgraph-sdk";
|
|
110
|
-
|
|
111
|
-
export const createClient = () => {
|
|
112
|
-
const apiUrl = process.env.LANGGRAPH_API_URL ?? "http://localhost:2024";
|
|
113
|
-
return new Client({ apiUrl });
|
|
114
|
-
};
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
</Tab>
|
|
118
|
-
</PlatformTabs>
|
|
119
|
-
|
|
120
|
-
</Step>
|
|
121
|
-
<Step>
|
|
122
|
-
|
|
123
|
-
### Build the assistant component
|
|
124
|
-
|
|
125
|
-
<PlatformTabs>
|
|
126
|
-
<Tab value="React">
|
|
127
|
-
|
|
128
|
-
```tsx title="@/components/MyAssistant.tsx"
|
|
129
|
-
"use client";
|
|
130
|
-
|
|
131
|
-
import { useMemo } from "react";
|
|
132
|
-
import { Thread } from "@/components/assistant-ui/thread";
|
|
133
|
-
import { AssistantRuntimeProvider } from "@assistant-ui/react";
|
|
134
|
-
import {
|
|
135
|
-
unstable_createLangGraphStream,
|
|
136
|
-
useLangGraphRuntime,
|
|
137
|
-
type LangChainMessage,
|
|
138
|
-
} from "@assistant-ui/react-langgraph";
|
|
139
|
-
|
|
140
|
-
import { createClient } from "@/lib/chatApi";
|
|
141
|
-
|
|
142
|
-
const ASSISTANT_ID = process.env["NEXT_PUBLIC_LANGGRAPH_ASSISTANT_ID"]!;
|
|
143
|
-
|
|
144
|
-
export function MyAssistant() {
|
|
145
|
-
const client = useMemo(() => createClient(), []);
|
|
146
|
-
const stream = useMemo(
|
|
147
|
-
() =>
|
|
148
|
-
unstable_createLangGraphStream({
|
|
149
|
-
client,
|
|
150
|
-
assistantId: ASSISTANT_ID,
|
|
151
|
-
}),
|
|
152
|
-
[client],
|
|
153
|
-
);
|
|
154
|
-
|
|
155
|
-
const runtime = useLangGraphRuntime({
|
|
156
|
-
unstable_allowCancellation: true,
|
|
157
|
-
stream,
|
|
158
|
-
create: async () => {
|
|
159
|
-
const { thread_id } = await client.threads.create();
|
|
160
|
-
return { externalId: thread_id };
|
|
161
|
-
},
|
|
162
|
-
load: async (externalId) => {
|
|
163
|
-
const state = await client.threads.getState<{
|
|
164
|
-
messages: LangChainMessage[];
|
|
165
|
-
}>(externalId);
|
|
166
|
-
return {
|
|
167
|
-
messages: state.values.messages,
|
|
168
|
-
interrupts: state.tasks[0]?.interrupts,
|
|
169
|
-
};
|
|
170
|
-
},
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
return (
|
|
174
|
-
<AssistantRuntimeProvider runtime={runtime}>
|
|
175
|
-
<Thread />
|
|
176
|
-
</AssistantRuntimeProvider>
|
|
177
|
-
);
|
|
178
|
-
}
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
</Tab>
|
|
182
|
-
<Tab value="React Native">
|
|
183
|
-
|
|
184
|
-
```tsx title="components/MyAssistant.tsx"
|
|
185
|
-
import { useMemo } from "react";
|
|
186
|
-
import { AssistantRuntimeProvider } from "@assistant-ui/react-native";
|
|
187
|
-
import {
|
|
188
|
-
unstable_createLangGraphStream,
|
|
189
|
-
useLangGraphRuntime,
|
|
190
|
-
type LangChainMessage,
|
|
191
|
-
} from "@assistant-ui/react-langgraph";
|
|
192
|
-
import { Thread } from "@/components/assistant-ui/thread";
|
|
193
|
-
|
|
194
|
-
import { createClient } from "@/lib/chatApi";
|
|
195
|
-
|
|
196
|
-
const ASSISTANT_ID = process.env.EXPO_PUBLIC_LANGGRAPH_ASSISTANT_ID!;
|
|
197
|
-
|
|
198
|
-
export function MyAssistant() {
|
|
199
|
-
const client = useMemo(() => createClient(), []);
|
|
200
|
-
const stream = useMemo(
|
|
201
|
-
() =>
|
|
202
|
-
unstable_createLangGraphStream({
|
|
203
|
-
client,
|
|
204
|
-
assistantId: ASSISTANT_ID,
|
|
205
|
-
}),
|
|
206
|
-
[client],
|
|
207
|
-
);
|
|
208
|
-
|
|
209
|
-
const runtime = useLangGraphRuntime({
|
|
210
|
-
unstable_allowCancellation: true,
|
|
211
|
-
stream,
|
|
212
|
-
create: async () => {
|
|
213
|
-
const { thread_id } = await client.threads.create();
|
|
214
|
-
return { externalId: thread_id };
|
|
215
|
-
},
|
|
216
|
-
load: async (externalId) => {
|
|
217
|
-
const state = await client.threads.getState<{
|
|
218
|
-
messages: LangChainMessage[];
|
|
219
|
-
}>(externalId);
|
|
220
|
-
return {
|
|
221
|
-
messages: state.values.messages,
|
|
222
|
-
interrupts: state.tasks[0]?.interrupts,
|
|
223
|
-
};
|
|
224
|
-
},
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
return (
|
|
228
|
-
<AssistantRuntimeProvider runtime={runtime}>
|
|
229
|
-
<Thread />
|
|
230
|
-
</AssistantRuntimeProvider>
|
|
231
|
-
);
|
|
232
|
-
}
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
</Tab>
|
|
236
|
-
<Tab value="React Ink">
|
|
237
|
-
|
|
238
|
-
```tsx title="components/MyAssistant.tsx"
|
|
239
|
-
import { useMemo } from "react";
|
|
240
|
-
import { AssistantRuntimeProvider } from "@assistant-ui/react-ink";
|
|
241
|
-
import {
|
|
242
|
-
unstable_createLangGraphStream,
|
|
243
|
-
useLangGraphRuntime,
|
|
244
|
-
type LangChainMessage,
|
|
245
|
-
} from "@assistant-ui/react-langgraph";
|
|
246
|
-
import { Thread } from "./thread.js";
|
|
247
|
-
|
|
248
|
-
import { createClient } from "../lib/chatApi.js";
|
|
249
|
-
|
|
250
|
-
const ASSISTANT_ID = process.env.LANGGRAPH_ASSISTANT_ID!;
|
|
251
|
-
|
|
252
|
-
export function MyAssistant() {
|
|
253
|
-
const client = useMemo(() => createClient(), []);
|
|
254
|
-
const stream = useMemo(
|
|
255
|
-
() =>
|
|
256
|
-
unstable_createLangGraphStream({
|
|
257
|
-
client,
|
|
258
|
-
assistantId: ASSISTANT_ID,
|
|
259
|
-
}),
|
|
260
|
-
[client],
|
|
261
|
-
);
|
|
262
|
-
|
|
263
|
-
const runtime = useLangGraphRuntime({
|
|
264
|
-
unstable_allowCancellation: true,
|
|
265
|
-
stream,
|
|
266
|
-
create: async () => {
|
|
267
|
-
const { thread_id } = await client.threads.create();
|
|
268
|
-
return { externalId: thread_id };
|
|
269
|
-
},
|
|
270
|
-
load: async (externalId) => {
|
|
271
|
-
const state = await client.threads.getState<{
|
|
272
|
-
messages: LangChainMessage[];
|
|
273
|
-
}>(externalId);
|
|
274
|
-
return {
|
|
275
|
-
messages: state.values.messages,
|
|
276
|
-
interrupts: state.tasks[0]?.interrupts,
|
|
277
|
-
};
|
|
278
|
-
},
|
|
279
|
-
});
|
|
280
|
-
|
|
281
|
-
return (
|
|
282
|
-
<AssistantRuntimeProvider runtime={runtime}>
|
|
283
|
-
<Thread />
|
|
284
|
-
</AssistantRuntimeProvider>
|
|
285
|
-
);
|
|
286
|
-
}
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
</Tab>
|
|
290
|
-
</PlatformTabs>
|
|
291
|
-
|
|
292
|
-
</Step>
|
|
293
|
-
<Step>
|
|
294
|
-
|
|
295
|
-
### Mount the component
|
|
296
|
-
|
|
297
|
-
<PlatformTabs>
|
|
298
|
-
<Tab value="React">
|
|
299
|
-
|
|
300
|
-
```tsx title="@/app/page.tsx"
|
|
301
|
-
import { MyAssistant } from "@/components/MyAssistant";
|
|
302
|
-
|
|
303
|
-
export default function Home() {
|
|
304
|
-
return (
|
|
305
|
-
<main className="h-dvh">
|
|
306
|
-
<MyAssistant />
|
|
307
|
-
</main>
|
|
308
|
-
);
|
|
309
|
-
}
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
</Tab>
|
|
313
|
-
<Tab value="React Native">
|
|
314
|
-
|
|
315
|
-
```tsx title="app/index.tsx"
|
|
316
|
-
import { View } from "react-native";
|
|
317
|
-
import { MyAssistant } from "@/components/MyAssistant";
|
|
318
|
-
|
|
319
|
-
export default function Home() {
|
|
320
|
-
return (
|
|
321
|
-
<View style={{ flex: 1 }}>
|
|
322
|
-
<MyAssistant />
|
|
323
|
-
</View>
|
|
324
|
-
);
|
|
325
|
-
}
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
</Tab>
|
|
329
|
-
<Tab value="React Ink">
|
|
330
|
-
|
|
331
|
-
```tsx title="app.tsx"
|
|
332
|
-
import { Box } from "ink";
|
|
333
|
-
import { MyAssistant } from "./components/MyAssistant.js";
|
|
334
|
-
|
|
335
|
-
export function App() {
|
|
336
|
-
return (
|
|
337
|
-
<Box flexDirection="column">
|
|
338
|
-
<MyAssistant />
|
|
339
|
-
</Box>
|
|
340
|
-
);
|
|
341
|
-
}
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
</Tab>
|
|
345
|
-
</PlatformTabs>
|
|
346
|
-
|
|
347
|
-
</Step>
|
|
348
|
-
<Step>
|
|
349
|
-
|
|
350
|
-
### Set environment variables
|
|
351
|
-
|
|
352
|
-
<PlatformTabs>
|
|
353
|
-
<Tab value="React">
|
|
354
|
-
|
|
355
|
-
Use the same `.env.local` shape as the template path [above](#from-the-template).
|
|
356
|
-
|
|
357
|
-
</Tab>
|
|
358
|
-
<Tab value="React Native">
|
|
359
|
-
|
|
360
|
-
```sh title=".env"
|
|
361
|
-
EXPO_PUBLIC_LANGGRAPH_API_URL=http://localhost:2024
|
|
362
|
-
EXPO_PUBLIC_LANGGRAPH_ASSISTANT_ID=your_graph_id
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
</Tab>
|
|
366
|
-
<Tab value="React Ink">
|
|
367
|
-
|
|
368
|
-
```sh title=".env"
|
|
369
|
-
LANGGRAPH_API_URL=http://localhost:2024
|
|
370
|
-
LANGGRAPH_ASSISTANT_ID=your_graph_id
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
</Tab>
|
|
374
|
-
</PlatformTabs>
|
|
375
|
-
|
|
376
|
-
</Step>
|
|
377
|
-
<Step>
|
|
378
|
-
|
|
379
|
-
### Set up UI components
|
|
380
|
-
|
|
381
|
-
<PlatformTabs>
|
|
382
|
-
<Tab value="React">
|
|
383
|
-
|
|
384
|
-
Follow the [UI Components guide](/docs/ui/thread) to wire up the Thread, composer, and supporting primitives.
|
|
385
|
-
|
|
386
|
-
</Tab>
|
|
387
|
-
<Tab value="React Native">
|
|
388
|
-
|
|
389
|
-
Follow the [React Native setup](/docs/react-native) to add a native Thread, composer, and supporting primitives.
|
|
390
|
-
|
|
391
|
-
</Tab>
|
|
392
|
-
<Tab value="React Ink">
|
|
393
|
-
|
|
394
|
-
Follow the [Ink setup](/docs/ink) to add a terminal Thread, composer, and supporting primitives.
|
|
395
|
-
|
|
396
|
-
</Tab>
|
|
397
|
-
</PlatformTabs>
|
|
398
|
-
|
|
399
|
-
</Step>
|
|
400
|
-
</Steps>
|
|
401
|
-
|
|
402
|
-
## Production proxy backend
|
|
403
|
-
|
|
404
|
-
For development, the client above hits LangGraph Cloud directly using `NEXT_PUBLIC_LANGGRAPH_API_URL`. For production, proxy through your own backend so your API key never reaches the client. Limit the proxy to the endpoints you actually need.
|
|
405
|
-
|
|
406
|
-
```ts title="@/app/api/[...path]/route.ts"
|
|
407
|
-
import { NextRequest, NextResponse } from "next/server";
|
|
408
|
-
|
|
409
|
-
export const runtime = "edge";
|
|
410
|
-
|
|
411
|
-
function getCorsHeaders() {
|
|
412
|
-
return {
|
|
413
|
-
"Access-Control-Allow-Origin": "*",
|
|
414
|
-
"Access-Control-Allow-Methods": "GET, POST, PUT, PATCH, DELETE, OPTIONS",
|
|
415
|
-
"Access-Control-Allow-Headers": "*",
|
|
416
|
-
};
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
async function handleRequest(req: NextRequest, method: string) {
|
|
420
|
-
try {
|
|
421
|
-
const path = req.nextUrl.pathname.replace(/^\/?api\//, "");
|
|
422
|
-
const url = new URL(req.url);
|
|
423
|
-
const searchParams = new URLSearchParams(url.search);
|
|
424
|
-
searchParams.delete("_path");
|
|
425
|
-
searchParams.delete("nxtP_path");
|
|
426
|
-
const queryString = searchParams.toString()
|
|
427
|
-
? `?${searchParams.toString()}`
|
|
428
|
-
: "";
|
|
429
|
-
|
|
430
|
-
const options: RequestInit = {
|
|
431
|
-
method,
|
|
432
|
-
headers: { "x-api-key": process.env["LANGCHAIN_API_KEY"] ?? "" },
|
|
433
|
-
signal: req.signal,
|
|
434
|
-
};
|
|
435
|
-
if (["POST", "PUT", "PATCH"].includes(method)) {
|
|
436
|
-
options.body = await req.text();
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
const res = await fetch(
|
|
440
|
-
`${process.env["LANGGRAPH_API_URL"]}/${path}${queryString}`,
|
|
441
|
-
options,
|
|
442
|
-
);
|
|
443
|
-
const headers = new Headers(res.headers);
|
|
444
|
-
headers.delete("content-encoding");
|
|
445
|
-
headers.delete("content-length");
|
|
446
|
-
headers.delete("transfer-encoding");
|
|
447
|
-
for (const [key, value] of Object.entries(getCorsHeaders())) {
|
|
448
|
-
headers.set(key, value);
|
|
449
|
-
}
|
|
450
|
-
return new NextResponse(res.body, {
|
|
451
|
-
status: res.status,
|
|
452
|
-
statusText: res.statusText,
|
|
453
|
-
headers,
|
|
454
|
-
});
|
|
455
|
-
} catch (e: unknown) {
|
|
456
|
-
if (e instanceof Error) {
|
|
457
|
-
const typedError = e as Error & { status?: number };
|
|
458
|
-
return NextResponse.json(
|
|
459
|
-
{ error: typedError.message },
|
|
460
|
-
{ status: typedError.status ?? 500 },
|
|
461
|
-
);
|
|
462
|
-
}
|
|
463
|
-
return NextResponse.json({ error: "Unknown error" }, { status: 500 });
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
export const GET = (req: NextRequest) => handleRequest(req, "GET");
|
|
468
|
-
export const POST = (req: NextRequest) => handleRequest(req, "POST");
|
|
469
|
-
export const PUT = (req: NextRequest) => handleRequest(req, "PUT");
|
|
470
|
-
export const PATCH = (req: NextRequest) => handleRequest(req, "PATCH");
|
|
471
|
-
export const DELETE = (req: NextRequest) => handleRequest(req, "DELETE");
|
|
472
|
-
export const OPTIONS = () =>
|
|
473
|
-
new NextResponse(null, { status: 204, headers: getCorsHeaders() });
|
|
474
|
-
```
|
|
475
|
-
|
|
476
|
-
With this route in place, drop `NEXT_PUBLIC_LANGGRAPH_API_URL` from production env vars; the client helper falls back to the same-origin `/api` path. Set `LANGCHAIN_API_KEY` and `LANGGRAPH_API_URL` server-side instead.
|
|
477
|
-
|
|
478
|
-
## Next
|
|
479
|
-
|
|
480
|
-
<Cards>
|
|
481
|
-
<Card
|
|
482
|
-
title="Streaming"
|
|
483
|
-
description="Event handlers, message metadata, message conversion."
|
|
484
|
-
href="/docs/runtimes/langgraph/streaming"
|
|
485
|
-
/>
|
|
486
|
-
<Card
|
|
487
|
-
title="Generative UI"
|
|
488
|
-
description="Structured UI components emitted by your graph."
|
|
489
|
-
href="/docs/runtimes/langgraph/generative-ui"
|
|
490
|
-
/>
|
|
491
|
-
<Card
|
|
492
|
-
title="Interrupts"
|
|
493
|
-
description="Interrupt persistence and checkpoint-based message editing."
|
|
494
|
-
href="/docs/runtimes/langgraph/interrupts"
|
|
495
|
-
/>
|
|
496
|
-
</Cards>
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Streaming
|
|
3
|
-
description: Event handlers, message accumulator, conversion, metadata, and generative UI.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
LangGraph emits a rich stream of events: top-level message chunks, subgraph events, custom UI messages, errors, and metadata. This page documents how to observe and react to each.
|
|
7
|
-
|
|
8
|
-
## Message accumulator
|
|
9
|
-
|
|
10
|
-
`LangGraphMessageAccumulator` lets you append messages incoming from the server to replicate the messages state client-side.
|
|
11
|
-
|
|
12
|
-
```ts
|
|
13
|
-
import {
|
|
14
|
-
LangGraphMessageAccumulator,
|
|
15
|
-
appendLangChainChunk,
|
|
16
|
-
} from "@assistant-ui/react-langgraph";
|
|
17
|
-
|
|
18
|
-
const accumulator = new LangGraphMessageAccumulator({
|
|
19
|
-
appendMessage: appendLangChainChunk,
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
if (event.event === "messages/partial") {
|
|
23
|
-
accumulator.addMessages(event.data);
|
|
24
|
-
}
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Message conversion
|
|
28
|
-
|
|
29
|
-
`convertLangChainMessages` transforms LangChain messages to assistant-ui's format. Use it when bridging into a custom adapter or rendering messages outside the runtime.
|
|
30
|
-
|
|
31
|
-
```ts
|
|
32
|
-
import { convertLangChainMessages } from "@assistant-ui/react-langgraph";
|
|
33
|
-
|
|
34
|
-
const threadMessage = convertLangChainMessages(langChainMessage);
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Event handlers
|
|
38
|
-
|
|
39
|
-
Listen to streaming events by passing `eventHandlers` to `useLangGraphRuntime`:
|
|
40
|
-
|
|
41
|
-
```ts
|
|
42
|
-
const runtime = useLangGraphRuntime({
|
|
43
|
-
stream: async (messages, { initialize, ...config }) => {
|
|
44
|
-
/* ... */
|
|
45
|
-
},
|
|
46
|
-
eventHandlers: {
|
|
47
|
-
onMessageChunk: (chunk, metadata) => {
|
|
48
|
-
// Fired for each chunk in messages-tuple mode.
|
|
49
|
-
// metadata contains langgraph_step, langgraph_node, ls_model_name, etc.
|
|
50
|
-
// For pipe-namespaced events emitted by subgraphs (e.g. messages|tools:call_abc),
|
|
51
|
-
// metadata.namespace holds the suffix ("tools:call_abc"). Use it to attribute
|
|
52
|
-
// a chunk to a specific subgraph.
|
|
53
|
-
},
|
|
54
|
-
onValues: (values) => {
|
|
55
|
-
// Fired when a top-level values event is received.
|
|
56
|
-
// Subgraph values events are routed to onSubgraphValues instead.
|
|
57
|
-
},
|
|
58
|
-
onUpdates: (updates) => {
|
|
59
|
-
// Fired when a top-level updates event is received.
|
|
60
|
-
// Subgraph updates events are routed to onSubgraphUpdates instead.
|
|
61
|
-
},
|
|
62
|
-
onSubgraphValues: (namespace, values) => {
|
|
63
|
-
// Fired when a subgraph values|<namespace> event is received
|
|
64
|
-
// (e.g. namespace === "tools:call_abc").
|
|
65
|
-
},
|
|
66
|
-
onSubgraphUpdates: (namespace, updates) => {
|
|
67
|
-
// Fired when a subgraph updates|<namespace> event is received.
|
|
68
|
-
},
|
|
69
|
-
onMetadata: (metadata) => {
|
|
70
|
-
/* thread metadata */
|
|
71
|
-
},
|
|
72
|
-
onInfo: (info) => {
|
|
73
|
-
/* informational messages */
|
|
74
|
-
},
|
|
75
|
-
onError: (error) => {
|
|
76
|
-
// Fired for both top-level and subgraph errors.
|
|
77
|
-
},
|
|
78
|
-
onSubgraphError: (namespace, error) => {
|
|
79
|
-
// Additionally fired for subgraph errors with the namespace.
|
|
80
|
-
// Use this to attribute a subgraph failure to its source without marking
|
|
81
|
-
// the parent message as incomplete (that only happens for top-level errors).
|
|
82
|
-
},
|
|
83
|
-
onCustomEvent: (type, data) => {
|
|
84
|
-
/* custom events */
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
});
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
## Message metadata
|
|
91
|
-
|
|
92
|
-
When using `streamMode: "messages-tuple"`, each chunk includes metadata from the LangGraph server. Access accumulated metadata per message with `useLangGraphMessageMetadata`:
|
|
93
|
-
|
|
94
|
-
```ts
|
|
95
|
-
import { useLangGraphMessageMetadata } from "@assistant-ui/react-langgraph";
|
|
96
|
-
|
|
97
|
-
function MyComponent() {
|
|
98
|
-
const metadata = useLangGraphMessageMetadata();
|
|
99
|
-
// Map<string, LangGraphTupleMetadata> keyed by message ID
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## Generative UI
|
|
104
|
-
|
|
105
|
-
LangGraph can emit structured UI components alongside assistant messages via `push_ui_message` (Python) or `typedUi().push()` (TypeScript). The assistant-ui adapter translates these into [`DataMessagePart`s](/docs/tools/tool-ui) on the associated assistant message, which you render with the existing `makeAssistantDataUI` API.
|
|
106
|
-
|
|
107
|
-
See [Generative UI](/docs/runtimes/langgraph/generative-ui) for full setup: enabling the `custom` stream channel, emitting UI messages, registering renderers, dynamic loading, and persisting UI state across thread switches.
|
|
108
|
-
|
|
109
|
-
## Queueing messages during a run
|
|
110
|
-
|
|
111
|
-
Set `unstable_enableMessageQueue` to keep the composer usable while a run is streaming. A message sent during a queued run steers by default — it lands in the steer lane, ahead of previously queued items; `send({ steer: false })` queues a follow-up behind them instead. Pending items are held in `composer.queue` and drain once the run settles.
|
|
112
|
-
|
|
113
|
-
```tsx
|
|
114
|
-
const runtime = useLangGraphRuntime({
|
|
115
|
-
stream,
|
|
116
|
-
unstable_enableMessageQueue: true,
|
|
117
|
-
});
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
Render the pending messages with [`ComposerPrimitive.Queue`](/docs/api-reference/primitives/composer) and [`QueueItemPrimitive`](/docs/api-reference/primitives/queue-item).
|
|
121
|
-
|
|
122
|
-
## Per-run config
|
|
123
|
-
|
|
124
|
-
When a message is sent, its `runConfig` is forwarded to `stream` and, if you use `unstable_createLangGraphStream`, posted as the LangGraph SDK run `config`. Automatic frontend tool-result resumes and `useLangGraphSendCommand` reuse the `runConfig` of the run that produced the pending tool call or interrupt. An explicit `runConfig` on `useLangGraphSend` still wins. A thread refetch that still carries the interrupt keeps that owner. History loaded without local ownership stays unconfigured on resume; the recording is session-scoped and does not survive a reload.
|
|
125
|
-
|
|
126
|
-
## Next
|
|
127
|
-
|
|
128
|
-
<Cards>
|
|
129
|
-
<Card
|
|
130
|
-
title="Generative UI"
|
|
131
|
-
description="Structured UI components emitted by your graph."
|
|
132
|
-
href="/docs/runtimes/langgraph/generative-ui"
|
|
133
|
-
/>
|
|
134
|
-
<Card
|
|
135
|
-
title="Interrupts"
|
|
136
|
-
description="Interrupt persistence and checkpoint-based message editing."
|
|
137
|
-
href="/docs/runtimes/langgraph/interrupts"
|
|
138
|
-
/>
|
|
139
|
-
<Card
|
|
140
|
-
title="Threads"
|
|
141
|
-
description="Basic thread support, AssistantCloud, custom thread list adapter."
|
|
142
|
-
href="/docs/runtimes/langgraph/threads"
|
|
143
|
-
/>
|
|
144
|
-
</Cards>
|