@assistant-ui/mcp-docs-server 0.1.30 → 0.1.31

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.
Files changed (208) hide show
  1. package/.docs/organized/code-examples/waterfall.md +1 -1
  2. package/.docs/organized/code-examples/with-a2a.md +2 -2
  3. package/.docs/organized/code-examples/with-ag-ui.md +3 -3
  4. package/.docs/organized/code-examples/with-ai-sdk-v6.md +5 -5
  5. package/.docs/organized/code-examples/with-artifacts.md +5 -5
  6. package/.docs/organized/code-examples/with-assistant-transport.md +3 -3
  7. package/.docs/organized/code-examples/with-chain-of-thought.md +79 -50
  8. package/.docs/organized/code-examples/with-cloud-standalone.md +4 -4
  9. package/.docs/organized/code-examples/with-cloud.md +4 -4
  10. package/.docs/organized/code-examples/with-custom-thread-list.md +56 -11
  11. package/.docs/organized/code-examples/with-elevenlabs-conversational.md +7 -7
  12. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +7 -7
  13. package/.docs/organized/code-examples/with-expo.md +16 -16
  14. package/.docs/organized/code-examples/with-external-store.md +2 -2
  15. package/.docs/organized/code-examples/with-ffmpeg.md +5 -5
  16. package/.docs/organized/code-examples/with-generative-ui.md +5 -5
  17. package/.docs/organized/code-examples/with-google-adk.md +4 -4
  18. package/.docs/organized/code-examples/with-heat-graph.md +1 -1
  19. package/.docs/organized/code-examples/with-interactables.md +5 -5
  20. package/.docs/organized/code-examples/with-langchain.md +3 -3
  21. package/.docs/organized/code-examples/with-langgraph.md +3 -3
  22. package/.docs/organized/code-examples/with-livekit.md +8 -8
  23. package/.docs/organized/code-examples/with-opencode.md +99 -54
  24. package/.docs/organized/code-examples/with-parent-id-grouping.md +4 -4
  25. package/.docs/organized/code-examples/with-react-hook-form.md +5 -5
  26. package/.docs/organized/code-examples/with-react-ink.md +1 -1
  27. package/.docs/organized/code-examples/with-react-router.md +8 -8
  28. package/.docs/organized/code-examples/with-store.md +1 -1
  29. package/.docs/organized/code-examples/with-tanstack.md +5 -5
  30. package/.docs/organized/code-examples/with-tap-runtime.md +2 -2
  31. package/.docs/raw/docs/(docs)/cli.mdx +2 -1
  32. package/.docs/raw/docs/(docs)/copilots/assistant-frame.mdx +1 -0
  33. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool-ui.mdx +10 -3
  34. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool.mdx +8 -3
  35. package/.docs/raw/docs/(docs)/copilots/make-assistant-visible.mdx +1 -0
  36. package/.docs/raw/docs/(docs)/copilots/model-context.mdx +1 -0
  37. package/.docs/raw/docs/(docs)/copilots/motivation.mdx +1 -0
  38. package/.docs/raw/docs/(docs)/copilots/use-assistant-instructions.mdx +1 -0
  39. package/.docs/raw/docs/(docs)/devtools.mdx +1 -0
  40. package/.docs/raw/docs/(docs)/index.mdx +1 -0
  41. package/.docs/raw/docs/(docs)/installation.mdx +1 -0
  42. package/.docs/raw/docs/(docs)/rtl.mdx +1 -0
  43. package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +34 -0
  44. package/.docs/raw/docs/(reference)/api-reference/adapters/feedback-speech.mdx +41 -0
  45. package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +26 -0
  46. package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +34 -0
  47. package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +31 -0
  48. package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +20 -0
  49. package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +26 -0
  50. package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +72 -0
  51. package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +41 -0
  52. package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +48 -0
  53. package/.docs/raw/docs/(reference)/api-reference/hooks/utilities.mdx +30 -0
  54. package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +23 -0
  55. package/.docs/raw/docs/(reference)/api-reference/overview.mdx +21 -0
  56. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +7 -0
  57. package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +65 -0
  58. package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +50 -6
  59. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +15 -0
  60. package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +36 -1
  61. package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +38 -0
  62. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +5 -0
  63. package/.docs/raw/docs/(reference)/migrations/v0-14.mdx +144 -6
  64. package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +230 -2
  65. package/.docs/raw/docs/cloud/ai-sdk.mdx +221 -3
  66. package/.docs/raw/docs/cloud/langgraph.mdx +274 -2
  67. package/.docs/raw/docs/{(docs)/guides → guides}/attachments.mdx +41 -36
  68. package/.docs/raw/docs/guides/branching.mdx +76 -0
  69. package/.docs/raw/docs/guides/chain-of-thought.mdx +166 -0
  70. package/.docs/raw/docs/{(docs)/guides → guides}/context-api.mdx +50 -22
  71. package/.docs/raw/docs/{(docs)/guides → guides}/dictation.mdx +2 -0
  72. package/.docs/raw/docs/guides/editing.mdx +102 -0
  73. package/.docs/raw/docs/guides/index.mdx +103 -0
  74. package/.docs/raw/docs/{(docs)/guides → guides}/interactables.mdx +49 -0
  75. package/.docs/raw/docs/{(docs)/guides → guides}/latex.mdx +51 -8
  76. package/.docs/raw/docs/{(docs)/guides → guides}/mentions.mdx +61 -86
  77. package/.docs/raw/docs/{(docs)/guides → guides}/message-timing.mdx +8 -2
  78. package/.docs/raw/docs/{(docs)/guides → guides}/multi-agent.mdx +64 -4
  79. package/.docs/raw/docs/{(docs)/guides → guides}/quoting.mdx +10 -17
  80. package/.docs/raw/docs/{(docs)/guides → guides}/slash-commands.mdx +103 -37
  81. package/.docs/raw/docs/guides/speech.mdx +156 -0
  82. package/.docs/raw/docs/{(docs)/guides → guides}/suggestions.mdx +21 -83
  83. package/.docs/raw/docs/{(docs)/guides → guides}/tool-ui.mdx +108 -36
  84. package/.docs/raw/docs/{(docs)/guides → guides}/tools.mdx +131 -35
  85. package/.docs/raw/docs/{(docs)/guides → guides}/voice.mdx +39 -0
  86. package/.docs/raw/docs/ink/index.mdx +1 -3
  87. package/.docs/raw/docs/ink/migration.mdx +1 -3
  88. package/.docs/raw/docs/ink/primitives.mdx +37 -1
  89. package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +520 -0
  90. package/.docs/raw/docs/integrations/auth/better-auth.mdx +191 -0
  91. package/.docs/raw/docs/integrations/auth/clerk.mdx +172 -0
  92. package/.docs/raw/docs/integrations/auth/next-auth.mdx +196 -0
  93. package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +79 -0
  94. package/.docs/raw/docs/integrations/frameworks/mastra/full-stack.mdx +188 -0
  95. package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +57 -0
  96. package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +201 -0
  97. package/.docs/raw/docs/integrations/gateways/index.mdx +157 -0
  98. package/.docs/raw/docs/integrations/index.mdx +173 -0
  99. package/.docs/raw/docs/integrations/observability/helicone.mdx +130 -0
  100. package/.docs/raw/docs/integrations/observability/langfuse.mdx +156 -0
  101. package/.docs/raw/docs/integrations/observability/langsmith.mdx +146 -0
  102. package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +712 -0
  103. package/.docs/raw/docs/integrations/tools/mcp.mdx +267 -0
  104. package/.docs/raw/docs/primitives/action-bar.mdx +1 -0
  105. package/.docs/raw/docs/primitives/assistant-modal.mdx +1 -0
  106. package/.docs/raw/docs/primitives/attachment.mdx +1 -0
  107. package/.docs/raw/docs/primitives/branch-picker.mdx +1 -0
  108. package/.docs/raw/docs/primitives/chain-of-thought.mdx +90 -85
  109. package/.docs/raw/docs/primitives/composer.mdx +2 -1
  110. package/.docs/raw/docs/primitives/error.mdx +1 -0
  111. package/.docs/raw/docs/primitives/index.mdx +2 -1
  112. package/.docs/raw/docs/primitives/message.mdx +68 -5
  113. package/.docs/raw/docs/primitives/selection-toolbar.mdx +1 -0
  114. package/.docs/raw/docs/primitives/suggestion.mdx +1 -0
  115. package/.docs/raw/docs/primitives/thread-list.mdx +39 -0
  116. package/.docs/raw/docs/primitives/thread.mdx +16 -13
  117. package/.docs/raw/docs/react-native/index.mdx +1 -3
  118. package/.docs/raw/docs/react-native/migration.mdx +1 -3
  119. package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +396 -0
  120. package/.docs/raw/docs/runtimes/a2a/overview.mdx +60 -0
  121. package/.docs/raw/docs/runtimes/a2a/quickstart.mdx +216 -0
  122. package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +70 -0
  123. package/.docs/raw/docs/runtimes/ag-ui/quickstart.mdx +243 -0
  124. package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +123 -0
  125. package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +52 -0
  126. package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +71 -131
  127. package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +69 -63
  128. package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +330 -123
  129. package/.docs/raw/docs/runtimes/concepts/adapters.mdx +265 -0
  130. package/.docs/raw/docs/runtimes/concepts/architecture.mdx +125 -0
  131. package/.docs/raw/docs/runtimes/concepts/stability.mdx +67 -0
  132. package/.docs/raw/docs/runtimes/concepts/threads.mdx +428 -0
  133. package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +703 -0
  134. package/.docs/raw/docs/runtimes/custom/data-stream.mdx +323 -0
  135. package/.docs/raw/docs/runtimes/custom/external-store.mdx +253 -1236
  136. package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +746 -0
  137. package/.docs/raw/docs/runtimes/custom/overview.mdx +71 -0
  138. package/.docs/raw/docs/runtimes/google-adk/api.mdx +256 -0
  139. package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +717 -0
  140. package/.docs/raw/docs/runtimes/google-adk/overview.mdx +69 -0
  141. package/.docs/raw/docs/runtimes/google-adk/quickstart.mdx +229 -0
  142. package/.docs/raw/docs/runtimes/langchain.mdx +533 -0
  143. package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +305 -0
  144. package/.docs/raw/docs/runtimes/langgraph/interrupts.mdx +104 -0
  145. package/.docs/raw/docs/runtimes/langgraph/overview.mdx +84 -0
  146. package/.docs/raw/docs/runtimes/langgraph/quickstart.mdx +496 -0
  147. package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +127 -0
  148. package/.docs/raw/docs/runtimes/langgraph/threads.mdx +113 -0
  149. package/.docs/raw/docs/runtimes/langgraph/tutorial/introduction.mdx +3 -3
  150. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-1.mdx +0 -23
  151. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +1 -1
  152. package/.docs/raw/docs/runtimes/opencode/hooks.mdx +191 -0
  153. package/.docs/raw/docs/runtimes/opencode/overview.mdx +48 -0
  154. package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +119 -0
  155. package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +71 -203
  156. package/.docs/raw/docs/ui/accordion.mdx +1 -0
  157. package/.docs/raw/docs/ui/assistant-modal.mdx +1 -0
  158. package/.docs/raw/docs/ui/assistant-sidebar.mdx +1 -0
  159. package/.docs/raw/docs/ui/attachment.mdx +1 -0
  160. package/.docs/raw/docs/ui/badge.mdx +1 -0
  161. package/.docs/raw/docs/ui/composer-trigger-popover.mdx +1 -0
  162. package/.docs/raw/docs/ui/context-display.mdx +1 -0
  163. package/.docs/raw/docs/ui/diff-viewer.mdx +1 -0
  164. package/.docs/raw/docs/ui/directive-text.mdx +1 -0
  165. package/.docs/raw/docs/ui/file.mdx +1 -0
  166. package/.docs/raw/docs/ui/image.mdx +1 -0
  167. package/.docs/raw/docs/ui/markdown.mdx +2 -14
  168. package/.docs/raw/docs/ui/mermaid.mdx +1 -0
  169. package/.docs/raw/docs/ui/message-timing.mdx +3 -2
  170. package/.docs/raw/docs/ui/model-selector.mdx +1 -0
  171. package/.docs/raw/docs/ui/part-grouping.mdx +325 -313
  172. package/.docs/raw/docs/ui/quote.mdx +1 -0
  173. package/.docs/raw/docs/ui/reasoning.mdx +66 -33
  174. package/.docs/raw/docs/ui/scrollbar.mdx +1 -0
  175. package/.docs/raw/docs/ui/select.mdx +1 -0
  176. package/.docs/raw/docs/ui/sources.mdx +1 -0
  177. package/.docs/raw/docs/ui/streamdown.mdx +1 -0
  178. package/.docs/raw/docs/ui/syntax-highlighting.mdx +1 -0
  179. package/.docs/raw/docs/ui/tabs.mdx +1 -0
  180. package/.docs/raw/docs/ui/thread-list.mdx +17 -0
  181. package/.docs/raw/docs/ui/thread.mdx +56 -1
  182. package/.docs/raw/docs/ui/tool-fallback.mdx +1 -0
  183. package/.docs/raw/docs/ui/tool-group.mdx +39 -11
  184. package/.docs/raw/docs/ui/voice.mdx +1 -0
  185. package/.docs/raw/docs/utilities/heat-graph.mdx +1 -0
  186. package/.docs/raw/docs/utilities/react-o11y.mdx +278 -0
  187. package/.docs/raw/docs/utilities/tw-shimmer.mdx +1 -0
  188. package/package.json +3 -3
  189. package/src/tools/tests/path-traversal.test.ts +1 -1
  190. package/.docs/raw/docs/(docs)/guides/branching.mdx +0 -65
  191. package/.docs/raw/docs/(docs)/guides/chain-of-thought.mdx +0 -164
  192. package/.docs/raw/docs/(docs)/guides/editing.mdx +0 -66
  193. package/.docs/raw/docs/(docs)/guides/speech.mdx +0 -38
  194. package/.docs/raw/docs/runtimes/a2a/index.mdx +0 -298
  195. package/.docs/raw/docs/runtimes/assistant-transport.mdx +0 -1033
  196. package/.docs/raw/docs/runtimes/custom/custom-thread-list.mdx +0 -314
  197. package/.docs/raw/docs/runtimes/custom/local.mdx +0 -1464
  198. package/.docs/raw/docs/runtimes/data-stream.mdx +0 -422
  199. package/.docs/raw/docs/runtimes/google-adk/index.mdx +0 -686
  200. package/.docs/raw/docs/runtimes/helicone.mdx +0 -61
  201. package/.docs/raw/docs/runtimes/langchain/comparison.mdx +0 -60
  202. package/.docs/raw/docs/runtimes/langchain/index.mdx +0 -210
  203. package/.docs/raw/docs/runtimes/langgraph/index.mdx +0 -699
  204. package/.docs/raw/docs/runtimes/langgraph/tutorial/index.mdx +0 -12
  205. package/.docs/raw/docs/runtimes/langserve.mdx +0 -116
  206. package/.docs/raw/docs/runtimes/mastra/full-stack-integration.mdx +0 -218
  207. package/.docs/raw/docs/runtimes/mastra/overview.mdx +0 -18
  208. package/.docs/raw/docs/runtimes/mastra/separate-server-integration.mdx +0 -217
@@ -1,61 +0,0 @@
1
- ---
2
- title: Helicone
3
- description: Configure Helicone proxy for OpenAI API logging and monitoring.
4
- ---
5
-
6
- Helicone acts as a proxy for your OpenAI API calls, enabling detailed logging and monitoring. To integrate, update your API base URL and add the Helicone-Auth header.
7
-
8
- ## AI SDK by vercel
9
-
10
- 1. **Set Environment Variables:**
11
-
12
- - `HELICONE_API_KEY`
13
- - `OPENAI_API_KEY`
14
-
15
- 2. **Configure the OpenAI client:**
16
-
17
- ```ts
18
- import { createOpenAI } from "@ai-sdk/openai";
19
- import { streamText } from "ai";
20
-
21
- const openai = createOpenAI({
22
- baseURL: "https://oai.helicone.ai/v1",
23
- headers: {
24
- "Helicone-Auth": `Bearer ${process.env.HELICONE_API_KEY}`,
25
- },
26
- });
27
-
28
- export async function POST(req: Request) {
29
- const { prompt } = await req.json();
30
- return streamText({
31
- model: openai("gpt-4o"),
32
- prompt,
33
- }).toUIMessageStreamResponse();
34
- }
35
- ```
36
-
37
- ## LangChain Integration (Python)
38
-
39
- 1. **Set Environment Variables:**
40
-
41
- - `HELICONE_API_KEY`
42
- - `OPENAI_API_KEY`
43
-
44
- 2. **Configure ChatOpenAI:**
45
-
46
- ```python
47
- from langchain_openai import ChatOpenAI
48
- import os
49
-
50
- llm = ChatOpenAI(
51
- model_name="gpt-4o",
52
- temperature=0,
53
- base_url="https://oai.helicone.ai/v1",
54
- api_key=os.environ["OPENAI_API_KEY"],
55
- default_headers={"Helicone-Auth": f"Bearer {os.environ['HELICONE_API_KEY']}"}
56
- )
57
- ```
58
-
59
- ## Summary
60
-
61
- Update your API base URL to `https://oai.helicone.ai/v1` and add the `Helicone-Auth` header with your API key either in your Vercel AI SDK or LangChain configuration.
@@ -1,60 +0,0 @@
1
- ---
2
- title: Comparison with `react-langgraph`
3
- description: How `@assistant-ui/react-langchain` differs from `@assistant-ui/react-langgraph`.
4
- ---
5
-
6
- Both packages connect assistant-ui to LangGraph backends. They are **independent adapters for different upstream libraries** — one is not a successor to the other.
7
-
8
- | Aspect | `@assistant-ui/react-langgraph` | `@assistant-ui/react-langchain` |
9
- | ------------------------------ | ------------------------------------------------------------ | ----------------------------------------------------- |
10
- | Wraps | `@langchain/langgraph-sdk` (raw SDK) | `@langchain/react` (`useStream` hook) |
11
- | Age | Sept 2024 onward | April 2026 onward |
12
- | Version | `0.13.x` | `0.0.x` |
13
- | Lines of source | ~7,500 | ~600 |
14
- | Built on | `useExternalStoreRuntime` | `useExternalStoreRuntime` |
15
- | `create-assistant-ui` template | `-t langgraph` ships this package | No template yet |
16
-
17
- ## Feature coverage
18
-
19
- | Feature | `react-langgraph` | `react-langchain` |
20
- | --------------------------------------- | -------------------------------- | ----------------------------------- |
21
- | Stream messages | ✅ `useLangGraphRuntime` | ✅ `useStreamRuntime` |
22
- | Interrupt state | ✅ `useLangGraphInterruptState` | ✅ `useLangChainInterruptState` |
23
- | Send raw state update / resume command | ✅ `useLangGraphSendCommand` | ✅ `useLangChainSubmit` |
24
- | Read arbitrary custom state key | ❌ | ✅ `useLangChainState<T>(key)` |
25
- | Per-message metadata (`messages-tuple`) | ✅ `useLangGraphMessageMetadata` | ❌ not exposed |
26
- | Generative UI messages (LangSmith) | ✅ `useLangGraphUIMessages` | ❌ not exposed |
27
- | Subgraph / namespaced stream events | ✅ via `eventHandlers` | ❌ not exposed |
28
- | End-to-end cancellation primitive | ✅ `unstable_createLangGraphStream` | ❌ not exposed |
29
- | Message accumulator utility | ✅ `LangGraphMessageAccumulator` | ❌ not exposed |
30
- | Cloud thread persistence | ✅ `cloud` option | ✅ `cloud` option |
31
-
32
- `react-langchain` is the newer, thinner wrapper — it delegates to the upstream `useStream` hook rather than re-implementing the stream plumbing. That is why its footprint is smaller and its surface area is narrower today. Features that exist in `react-langgraph` but not `react-langchain` are absent because they have not yet been ported, not because they are deprecated.
33
-
34
- ## Choosing between them
35
-
36
- Use `@assistant-ui/react-langgraph` when:
37
-
38
- - You are scaffolding via `npx create-assistant-ui -t langgraph`.
39
- - You want the broader feature set today (subgraph events, UI messages, message metadata, cancellation).
40
- - You prefer integrating with `@langchain/langgraph-sdk` directly.
41
-
42
- Use `@assistant-ui/react-langchain` when:
43
-
44
- - Your app already depends on `@langchain/react` and uses `useStream` elsewhere.
45
- - You want to read custom state keys (`todos`, `files`, plans, ...) with `useLangChainState<T>(key)` without reconstructing them from tool-call streams.
46
- - You prefer a thin wrapper that stays pinned to upstream behavior.
47
-
48
- ## Hook name mapping
49
-
50
- If you are moving code between the two adapters, most hooks have a counterpart — but note the feature gaps above.
51
-
52
- | `react-langgraph` | `react-langchain` | Notes |
53
- | ---------------------------------- | ----------------------------------- | ----------------------------------------------------------- |
54
- | `useLangGraphRuntime` | `useStreamRuntime` | Options extend upstream `UseStreamOptions`; no `stream` / `create` / `load` to write. |
55
- | `useLangGraphInterruptState` | `useLangChainInterruptState` | Same return shape: `{ value?: unknown } \| undefined`. |
56
- | `useLangGraphSendCommand` | `useLangChainSubmit` | `submit(values, { command })` replaces the dedicated hook. |
57
- | `useLangGraphSend` | _(use `runtime.thread.append`)_ | No direct equivalent; send turns through the runtime. |
58
- | `useLangGraphMessageMetadata` | _(not available)_ | Open an issue if you rely on this. |
59
- | `useLangGraphUIMessages` | _(not available)_ | Open an issue if you rely on this. |
60
- | _(none)_ | `useLangChainState<T>(key)` | New — reads any custom state key reactively. |
@@ -1,210 +0,0 @@
1
- ---
2
- title: Getting Started
3
- description: Adapter for LangChain's `useStream` hook, exposed as an assistant-ui runtime.
4
- ---
5
-
6
- `@assistant-ui/react-langchain` wraps [`useStream`](https://docs.langchain.com/oss/javascript/langgraph-sdk/react-stream) from `@langchain/react` and exposes it as an assistant-ui runtime. Use this package if you are already integrating your app with `@langchain/react` and want assistant-ui on top of the upstream hook.
7
-
8
- <Callout type="info">
9
- assistant-ui ships two adapters for LangGraph backends:
10
- - **[`@assistant-ui/react-langgraph`](/docs/runtimes/langgraph)** integrates with `@langchain/langgraph-sdk` directly and exposes features like subgraph events, UI messages, message metadata, and end-to-end cancellation.
11
- - **`@assistant-ui/react-langchain`** (this page) wraps `@langchain/react`'s `useStream`. It is lighter-weight and stays aligned with upstream, but currently does not expose every `react-langgraph` feature.
12
-
13
- See [the comparison doc](/docs/runtimes/langchain/comparison) for a feature gap table.
14
- </Callout>
15
-
16
- ## Requirements
17
-
18
- You need a LangGraph Cloud API server. You can start a server locally via [LangGraph Studio](https://github.com/langchain-ai/langgraph-studio) or use [LangSmith](https://www.langchain.com/langsmith) for a hosted version.
19
-
20
- The state of the graph you are using must have a `messages` key with a list of LangChain-alike messages (or pass a custom `messagesKey`).
21
-
22
- ## Installation
23
-
24
- <Steps>
25
- <Step>
26
-
27
- ### Install dependencies
28
-
29
- <InstallCommand npm={["@assistant-ui/react", "@assistant-ui/react-langchain", "@langchain/react", "@langchain/langgraph-sdk"]} />
30
-
31
- </Step>
32
- <Step>
33
-
34
- ### Define a `MyAssistant` component
35
-
36
- ```tsx title="@/components/MyAssistant.tsx"
37
- "use client";
38
-
39
- import { Thread } from "@/components/assistant-ui/thread";
40
- import { AssistantRuntimeProvider } from "@assistant-ui/react";
41
- import { useStreamRuntime } from "@assistant-ui/react-langchain";
42
-
43
- export function MyAssistant() {
44
- const runtime = useStreamRuntime({
45
- assistantId: process.env["NEXT_PUBLIC_LANGGRAPH_ASSISTANT_ID"]!,
46
- apiUrl: process.env["NEXT_PUBLIC_LANGGRAPH_API_URL"],
47
- });
48
-
49
- return (
50
- <AssistantRuntimeProvider runtime={runtime}>
51
- <Thread />
52
- </AssistantRuntimeProvider>
53
- );
54
- }
55
- ```
56
-
57
- </Step>
58
- <Step>
59
-
60
- ### Use the `MyAssistant` component
61
-
62
- ```tsx title="@/app/page.tsx"
63
- import { MyAssistant } from "@/components/MyAssistant";
64
-
65
- export default function Home() {
66
- return (
67
- <main className="h-dvh">
68
- <MyAssistant />
69
- </main>
70
- );
71
- }
72
- ```
73
-
74
- </Step>
75
- <Step>
76
-
77
- ### Set environment variables
78
-
79
- Create a `.env.local` file in your project with the following variables:
80
-
81
- ```sh
82
- NEXT_PUBLIC_LANGGRAPH_API_URL=http://localhost:2024
83
- NEXT_PUBLIC_LANGGRAPH_ASSISTANT_ID=your_graph_id
84
- ```
85
-
86
- </Step>
87
- <Step>
88
-
89
- ### Set up UI components
90
-
91
- Follow the [UI Components](/docs/ui/thread) guide to set up the UI components.
92
-
93
- </Step>
94
- </Steps>
95
-
96
- ## `useStreamRuntime` options
97
-
98
- `useStreamRuntime` accepts every option [`useStream`](https://docs.langchain.com/oss/javascript/langgraph-sdk/react-stream) from `@langchain/react` does, plus three assistant-ui-specific fields:
99
-
100
- | Option | Type | Description |
101
- | ------------- | ---------------------------------------------- | ------------------------------------------------------------------------ |
102
- | `cloud` | `AssistantCloud` | Optional — persists threads via assistant-cloud. |
103
- | `adapters` | `{ attachments?, speech?, feedback? }` | Optional — attachment, speech, and feedback adapters. |
104
- | `messagesKey` | `string` | The state key that holds messages. Defaults to `"messages"`. |
105
-
106
- ## Reading custom state keys
107
-
108
- LangGraph agents often expose structured state beyond messages (plans, todos, scratch files, generative-UI artifacts). Read them directly with `useLangChainState`. It mirrors `useStream().values[key]` upstream and updates when the stream emits new state.
109
-
110
- ```tsx
111
- import { useLangChainState } from "@assistant-ui/react-langchain";
112
-
113
- type Todo = { id: string; title: string; done: boolean };
114
-
115
- function TodoList() {
116
- const todos = useLangChainState<Todo[]>("todos", []);
117
-
118
- return (
119
- <ul>
120
- {todos.map((t) => (
121
- <li key={t.id}>
122
- {t.done ? "✓" : "○"} {t.title}
123
- </li>
124
- ))}
125
- </ul>
126
- );
127
- }
128
- ```
129
-
130
- Signatures:
131
-
132
- ```ts
133
- useLangChainState<T>(key: string): T | undefined;
134
- useLangChainState<T>(key: string, defaultValue: T): T;
135
- ```
136
-
137
- This hook is especially useful with the [`deepagents`](https://docs.langchain.com/oss/python/deepagents) middleware, whose `write_todos` step updates `state.todos` alongside the tool-call stream. Reading the state key directly avoids reconstructing the list from partial tool-call args.
138
-
139
- <Callout type="info">
140
- Added in v0.0.2 — see issue [#3862](https://github.com/assistant-ui/assistant-ui/issues/3862) for motivation.
141
- </Callout>
142
-
143
- ## Interrupts
144
-
145
- LangGraph interrupts pause the graph and wait for client input. `useLangChainInterruptState` exposes the current interrupt; `useLangChainSubmit` resumes the graph with a raw state update.
146
-
147
- ```tsx
148
- import {
149
- useLangChainInterruptState,
150
- useLangChainSubmit,
151
- } from "@assistant-ui/react-langchain";
152
- import { Command } from "@langchain/langgraph-sdk";
153
-
154
- function InterruptPrompt() {
155
- const interrupt = useLangChainInterruptState();
156
- const submit = useLangChainSubmit();
157
-
158
- if (!interrupt) return null;
159
-
160
- return (
161
- <div>
162
- <pre>{JSON.stringify(interrupt.value, null, 2)}</pre>
163
- <button
164
- onClick={() =>
165
- submit(null, { command: new Command({ resume: "approved" }) })
166
- }
167
- >
168
- Approve
169
- </button>
170
- </div>
171
- );
172
- }
173
- ```
174
-
175
- ## Message conversion
176
-
177
- `convertLangChainBaseMessage` transforms a LangChain `BaseMessage` into an assistant-ui message. Use it when building a custom `ExternalStoreAdapter` that needs to consume LangChain messages outside of `useStreamRuntime`.
178
-
179
- ```ts
180
- import { convertLangChainBaseMessage } from "@assistant-ui/react-langchain";
181
- ```
182
-
183
- ## Cloud persistence
184
-
185
- Pass an `AssistantCloud` instance to persist threads across sessions. The runtime automatically wires thread list management and resumes state from the cloud.
186
-
187
- ```tsx
188
- import { AssistantCloud } from "assistant-cloud";
189
- import { useStreamRuntime } from "@assistant-ui/react-langchain";
190
-
191
- const cloud = new AssistantCloud({ baseUrl: "/api/cloud" });
192
-
193
- const runtime = useStreamRuntime({
194
- cloud,
195
- assistantId: "agent",
196
- apiUrl: "http://localhost:2024",
197
- });
198
- ```
199
-
200
- ## Custom `messagesKey`
201
-
202
- If your graph stores messages under a non-default key, pass `messagesKey` so the runtime submits tool results and human turns to the correct state slot:
203
-
204
- ```tsx
205
- const runtime = useStreamRuntime({
206
- assistantId: "agent",
207
- apiUrl: "http://localhost:2024",
208
- messagesKey: "chat_messages",
209
- });
210
- ```