This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @langchain/langgraph-sdk@1.9.29 ### Patch Changes - [#2668](https://github.com/langchain-ai/langgraphjs/pull/2668) [`f9c0e88`](https://github.com/langchain-ai/langgraphjs/commit/f9c0e885e25149fe614d7d2002c884b80ab54484) Thanks [@edenbuilds](https://github.com/edenbuilds)! - Always attach the underlying Response on HTTPError. - [#2675](https://github.com/langchain-ai/langgraphjs/pull/2675) [`3958305`](https://github.com/langchain-ai/langgraphjs/commit/3958305d3ee89419abc496f28602cf4b38f2a6b3) Thanks [@christian-bromann](https://github.com/christian-bromann)! - fix(sdk): deliver input channel events on the root-bus fast path `channelProjection` with `replay: false` (the `useChannelEffect` default) compared `event.method` to channel names, so `input.requested` never matched `"input"`. Match via `inferChannel` instead, same as the slow path. - [#2677](https://github.com/langchain-ai/langgraphjs/pull/2677) [`4c0fd78`](https://github.com/langchain-ai/langgraphjs/commit/4c0fd78485e1778234ddb56c7579f8d823946f18) Thanks [@christian-bromann](https://github.com/christian-bromann)! - fix(sdk): defer stream join until lazy thread create commits Hydrating an externally-minted thread id that 404s still opened `/stream/events` before `POST /commands` created the row. On langgraph_api's in-mem runtime that join is accepted but dead, so the first run delivered nothing until idle reconnect. Treat missing threads like client-minted ones and start the root pump only after dispatch succeeds. - [#2672](https://github.com/langchain-ai/langgraphjs/pull/2672) [`5be518f`](https://github.com/langchain-ai/langgraphjs/commit/5be518fe18f2497a28957dfec85522997e6df4f3) Thanks [@christian-bromann](https://github.com/christian-bromann)! - fix(sdk): surface nested interrupts on stream.interrupts `input.requested` events from subgraphs/subagents were dropped live by a root-only filter, while hydrate seeded them from `state.tasks`, so HITL UIs saw nested interrupts only after reload. Mirror every namespace onto `rootStore.interrupts` (with `Interrupt.namespace`), and resolve that namespace in `respond({ interruptId })` when callers omit it. - [#2676](https://github.com/langchain-ai/langgraphjs/pull/2676) [`b3c1ceb`](https://github.com/langchain-ai/langgraphjs/commit/b3c1ceb2cc16dcb15e7a9c1178fe6ddb98e5a93f) Thanks [@christian-bromann](https://github.com/christian-bromann)! - fix(sdk): resolve respond() namespace from interrupt id When callers pass `{ interruptId }` without `namespace`, look the namespace up on `thread.interrupts` instead of defaulting to root. ## @langchain/angular@1.0.30 ### Patch Changes - [#2676](https://github.com/langchain-ai/langgraphjs/pull/2676) [`b3c1ceb`](https://github.com/langchain-ai/langgraphjs/commit/b3c1ceb2cc16dcb15e7a9c1178fe6ddb98e5a93f) Thanks [@christian-bromann](https://github.com/christian-bromann)! - fix(sdk): resolve respond() namespace from interrupt id When callers pass `{ interruptId }` without `namespace`, look the namespace up on `thread.interrupts` instead of defaulting to root. - Updated dependencies [[`f9c0e88`](https://github.com/langchain-ai/langgraphjs/commit/f9c0e885e25149fe614d7d2002c884b80ab54484), [`3958305`](https://github.com/langchain-ai/langgraphjs/commit/3958305d3ee89419abc496f28602cf4b38f2a6b3), [`4c0fd78`](https://github.com/langchain-ai/langgraphjs/commit/4c0fd78485e1778234ddb56c7579f8d823946f18), [`5be518f`](https://github.com/langchain-ai/langgraphjs/commit/5be518fe18f2497a28957dfec85522997e6df4f3), [`b3c1ceb`](https://github.com/langchain-ai/langgraphjs/commit/b3c1ceb2cc16dcb15e7a9c1178fe6ddb98e5a93f)]: - @langchain/langgraph-sdk@1.9.29 ## @langchain/react@1.0.30 ### Patch Changes - [#2676](https://github.com/langchain-ai/langgraphjs/pull/2676) [`b3c1ceb`](https://github.com/langchain-ai/langgraphjs/commit/b3c1ceb2cc16dcb15e7a9c1178fe6ddb98e5a93f) Thanks [@christian-bromann](https://github.com/christian-bromann)! - fix(sdk): resolve respond() namespace from interrupt id When callers pass `{ interruptId }` without `namespace`, look the namespace up on `thread.interrupts` instead of defaulting to root. - Updated dependencies [[`f9c0e88`](https://github.com/langchain-ai/langgraphjs/commit/f9c0e885e25149fe614d7d2002c884b80ab54484), [`3958305`](https://github.com/langchain-ai/langgraphjs/commit/3958305d3ee89419abc496f28602cf4b38f2a6b3), [`4c0fd78`](https://github.com/langchain-ai/langgraphjs/commit/4c0fd78485e1778234ddb56c7579f8d823946f18), [`5be518f`](https://github.com/langchain-ai/langgraphjs/commit/5be518fe18f2497a28957dfec85522997e6df4f3), [`b3c1ceb`](https://github.com/langchain-ai/langgraphjs/commit/b3c1ceb2cc16dcb15e7a9c1178fe6ddb98e5a93f)]: - @langchain/langgraph-sdk@1.9.29 ## @langchain/svelte@1.0.30 ### Patch Changes - [#2676](https://github.com/langchain-ai/langgraphjs/pull/2676) [`b3c1ceb`](https://github.com/langchain-ai/langgraphjs/commit/b3c1ceb2cc16dcb15e7a9c1178fe6ddb98e5a93f) Thanks [@christian-bromann](https://github.com/christian-bromann)! - fix(sdk): resolve respond() namespace from interrupt id When callers pass `{ interruptId }` without `namespace`, look the namespace up on `thread.interrupts` instead of defaulting to root. - Updated dependencies [[`f9c0e88`](https://github.com/langchain-ai/langgraphjs/commit/f9c0e885e25149fe614d7d2002c884b80ab54484), [`3958305`](https://github.com/langchain-ai/langgraphjs/commit/3958305d3ee89419abc496f28602cf4b38f2a6b3), [`4c0fd78`](https://github.com/langchain-ai/langgraphjs/commit/4c0fd78485e1778234ddb56c7579f8d823946f18), [`5be518f`](https://github.com/langchain-ai/langgraphjs/commit/5be518fe18f2497a28957dfec85522997e6df4f3), [`b3c1ceb`](https://github.com/langchain-ai/langgraphjs/commit/b3c1ceb2cc16dcb15e7a9c1178fe6ddb98e5a93f)]: - @langchain/langgraph-sdk@1.9.29 ## @langchain/vue@1.0.30 ### Patch Changes - [#2676](https://github.com/langchain-ai/langgraphjs/pull/2676) [`b3c1ceb`](https://github.com/langchain-ai/langgraphjs/commit/b3c1ceb2cc16dcb15e7a9c1178fe6ddb98e5a93f) Thanks [@christian-bromann](https://github.com/christian-bromann)! - fix(sdk): resolve respond() namespace from interrupt id When callers pass `{ interruptId }` without `namespace`, look the namespace up on `thread.interrupts` instead of defaulting to root. - Updated dependencies [[`f9c0e88`](https://github.com/langchain-ai/langgraphjs/commit/f9c0e885e25149fe614d7d2002c884b80ab54484), [`3958305`](https://github.com/langchain-ai/langgraphjs/commit/3958305d3ee89419abc496f28602cf4b38f2a6b3), [`4c0fd78`](https://github.com/langchain-ai/langgraphjs/commit/4c0fd78485e1778234ddb56c7579f8d823946f18), [`5be518f`](https://github.com/langchain-ai/langgraphjs/commit/5be518fe18f2497a28957dfec85522997e6df4f3), [`b3c1ceb`](https://github.com/langchain-ai/langgraphjs/commit/b3c1ceb2cc16dcb15e7a9c1178fe6ddb98e5a93f)]: - @langchain/langgraph-sdk@1.9.29 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@langchain/vue
Vue SDK for building AI-powered applications with Deep Agents, LangChain and LangGraph.
The package ships a Composition-API–first binding built on top of
the v2 streaming protocol. useStream returns a small, always-on
root handle (values, messages, isLoading, error, …) and
pushes anything namespaced (subagents, subgraphs, media, submission
queue, per-message metadata) behind ref-counted use* selectors
so components only pay for the data they actually consume.
Upgrading from
0.x? Seedocs/v1-migration.mdfor the complete matrix of option, return-shape, and transport changes.
Highlights
- v2-native streaming protocol. Session-based transport with
automatic re-attach on remount — no
reconnectOnMount/joinStreamdance. - Composition-API first. Everything is a
ShallowRef/ComputedRef, auto-disposed viaonScopeDisposewhen the scope unmounts. - Selector-based subscriptions. Namespaced data (subagents, subgraphs, media) streams only when a component actually mounts the matching selector composable, and releases on unmount.
- Discriminated transports. Hosted Agent Server and custom adapters are two arms of a single typed union — mixing them is a compile-time error.
- Agent-brand type inference.
useStream<typeof agent>()unwraps state, tool calls, and subagent state maps from an agent brand. - Multimodal media streams. Built-in assembly for audio,
images, video, and files, with ready-to-use
<img>/<audio>/<video>players. <Suspense>friendly.hydrationPromiselets you gateasync setup()on initial hydration.
Installation
npm install @langchain/vue @langchain/core
Peer dependencies: vue (^3.4.0), @langchain/core (^1.0.1).
Quick start
<script setup lang="ts">
import { useStream } from "@langchain/vue";
const stream = useStream({
assistantId: "agent",
apiUrl: "http://localhost:2024",
});
function onSubmit() {
void stream.submit({ messages: [{ type: "human", content: "Hello!" }] });
}
</script>
<template>
<div>
<div v-for="(msg, i) in stream.messages" :key="msg.id ?? i">
{{ typeof msg.content === "string" ? msg.content : JSON.stringify(msg.content) }}
</div>
<button :disabled="stream.isLoading" @click="onSubmit">
Send
</button>
</div>
</template>
Reactive fields on the handle are Vue refs (ShallowRef /
ComputedRef). In <script setup>, read them with .value:
stream.messages.value, stream.isLoading.value. In <template>,
Vue auto-unwraps refs, so prefer the shorter
stream.messages / stream.isLoading form.
Documentation
In-depth guides live in docs/:
- API reference —
useStreamoptions and return shape. - Selectors — ref-counted readers for namespaced / scoped data.
- Transports — SSE, WebSocket, and custom
AgentServerAdapterimplementations. - Custom transports — implementing
AgentServerAdapteragainst your own backend, with a worked walkthrough ofexamples/ui-react-transport. - Interrupts & headless tools — pausing a run, responding to interrupts, registering browser-side tools.
- Forking from a message — edit / retry flows
with
useMessageMetadata+submit({ forkFrom }). - Submission queue — inspecting and cancelling enqueued submits.
- Subagents & subgraphs — rendering per-subagent messages, tool calls, and state via scoped selectors.
- Multimodal media — audio / image / video / file streams with built-in players.
- Sharing a stream —
provideStream,useStreamContext, and theLangChainPluginapp-level defaults. - Suspense-style hydration — gating
async setup()onhydrationPromise. - Type safety — brand inference, generics, and the exported helper types.
- Testing — mounting components with mock streams or real dev servers.
- Migrating from 0.x — full diff of options, return shape, and transport classes.
Playground
For complete end-to-end examples with full agentic UIs, visit the LangChain UI Playground.
License
MIT