Bumps the all-dependencies group in /libs/cli/js-monorepo-example with 4 updates: [turbo](https://github.com/vercel/turborepo), [eslint](https://github.com/eslint/eslint), [@langchain/core](https://github.com/langchain-ai/langchainjs) and [@langchain/langgraph](https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core). Updates `turbo` from 2.8.9 to 2.8.10 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/vercel/turborepo/releases">turbo's releases</a>.</em></p> <blockquote> <h2>Turborepo v2.8.10</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <h3>create-turbo</h3> <ul> <li>fix: Sanitize git command inputs in create-turbo by <a href="https://github.com/anthonyshew"><code>@anthonyshew</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11876">vercel/turborepo#11876</a></li> </ul> <h3>Changelog</h3> <ul> <li>fix: Move <code>node-plop</code> to dependencies so <code>PlopTypes</code> resolves for consumers by <a href="https://github.com/anthonyshew"><code>@anthonyshew</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11862">vercel/turborepo#11862</a></li> <li>chore: Use 2024 edition in more packages, do not ignore some clippy l… by <a href="https://github.com/ognevny"><code>@ognevny</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11860">vercel/turborepo#11860</a></li> <li>perf: Optimize hot-path hash computation by avoiding clones and using unstable sorts by <a href="https://github.com/anthonyshew"><code>@anthonyshew</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11872">vercel/turborepo#11872</a></li> <li>perf: Replace twox-hash with xxhash-rust and optimize file hashing by <a href="https://github.com/anthonyshew"><code>@anthonyshew</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11874">vercel/turborepo#11874</a></li> <li>fix: Restrict credential file permissions to owner-only by <a href="https://github.com/anthonyshew"><code>@anthonyshew</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11870">vercel/turborepo#11870</a></li> <li>perf: Reduce allocations in globwalk by <a href="https://github.com/anthonyshew"><code>@anthonyshew</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11528">vercel/turborepo#11528</a></li> <li>perf: Replace O(V³) Floyd-Warshall with O(V+E) DFS in watch mode subgraph creation by <a href="https://github.com/anthonyshew"><code>@anthonyshew</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11878">vercel/turborepo#11878</a></li> <li>feat: Generate LLM-friendly markdown alongside --profile trace output by <a href="https://github.com/anthonyshew"><code>@anthonyshew</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11880">vercel/turborepo#11880</a></li> <li>feat: Make <code>--profile</code> and <code>--anon-profile</code> filename optional by <a href="https://github.com/anthonyshew"><code>@anthonyshew</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11883">vercel/turborepo#11883</a></li> <li>perf: Batch per-package git subprocess calls into repo-wide index by <a href="https://github.com/anthonyshew"><code>@anthonyshew</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11887">vercel/turborepo#11887</a></li> <li>perf: Parallelize and pre-build RepoGitIndex by <a href="https://github.com/anthonyshew"><code>@anthonyshew</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11889">vercel/turborepo#11889</a></li> <li>perf: Pre-compile glob exclusion filter and cache path prefix in file hashing by <a href="https://github.com/anthonyshew"><code>@anthonyshew</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11891">vercel/turborepo#11891</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/vercel/turborepo/compare/v2.8.9...v2.8.10">https://github.com/vercel/turborepo/compare/v2.8.9...v2.8.10</a></p> <h2>Turborepo v2.8.10-canary.9</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <h3>Changelog</h3> <ul> <li>perf: Pre-compile glob exclusion filter and cache path prefix in file hashing by <a href="https://github.com/anthonyshew"><code>@anthonyshew</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11891">vercel/turborepo#11891</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/vercel/turborepo/compare/v2.8.10-canary.8...v2.8.10-canary.9">https://github.com/vercel/turborepo/compare/v2.8.10-canary.8...v2.8.10-canary.9</a></p> <h2>Turborepo v2.8.10-canary.8</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <h3>Changelog</h3> <ul> <li>perf: Parallelize and pre-build RepoGitIndex by <a href="https://github.com/anthonyshew"><code>@anthonyshew</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11889">vercel/turborepo#11889</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/vercel/turborepo/compare/v2.8.10-canary.7...v2.8.10-canary.8">https://github.com/vercel/turborepo/compare/v2.8.10-canary.7...v2.8.10-canary.8</a></p> <h2>Turborepo v2.8.10-canary.7</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <h3>Changelog</h3> <ul> <li>perf: Batch per-package git subprocess calls into repo-wide index by <a href="https://github.com/anthonyshew"><code>@anthonyshew</code></a> in <a href="https://redirect.github.com/vercel/turborepo/pull/11887">vercel/turborepo#11887</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/vercel/turborepo/commit/1e0e1aed44b25c90326be67fb6ffd926cc37ecc1"><code>1e0e1ae</code></a> publish 2.8.10 to registry</li> <li><a href="https://github.com/vercel/turborepo/commit/7cb9f0cc036919340b1960d27e06ac307b1a0e63"><code>7cb9f0c</code></a> release(turborepo): 2.8.10-canary.9 (<a href="https://redirect.github.com/vercel/turborepo/issues/11892">#11892</a>)</li> <li><a href="https://github.com/vercel/turborepo/commit/2af1c0dbfd3553f091144f11ac3df649f4ae2aea"><code>2af1c0d</code></a> perf: Pre-compile glob exclusion filter and cache path prefix in file hashing...</li> <li><a href="https://github.com/vercel/turborepo/commit/31e29c9f0c860c0493f8a77f015a07e0d984d89d"><code>31e29c9</code></a> release(turborepo): 2.8.10-canary.8 (<a href="https://redirect.github.com/vercel/turborepo/issues/11890">#11890</a>)</li> <li><a href="https://github.com/vercel/turborepo/commit/5cbeef34d39e4a22133cd0516634128dddb5c2a9"><code>5cbeef3</code></a> perf: Parallelize and pre-build RepoGitIndex (<a href="https://redirect.github.com/vercel/turborepo/issues/11889">#11889</a>)</li> <li><a href="https://github.com/vercel/turborepo/commit/a4213a1ee56a4a48d1b5cb62f3dd5f18c6f030c6"><code>a4213a1</code></a> release(turborepo): 2.8.10-canary.7 (<a href="https://redirect.github.com/vercel/turborepo/issues/11888">#11888</a>)</li> <li><a href="https://github.com/vercel/turborepo/commit/42ab7fcf25b9075215c2373101b695c46ffe7f8c"><code>42ab7fc</code></a> perf: Batch per-package git subprocess calls into repo-wide index (<a href="https://redirect.github.com/vercel/turborepo/issues/11887">#11887</a>)</li> <li><a href="https://github.com/vercel/turborepo/commit/48f5a2befe3b24df2ded190aeafce9a05d9129b8"><code>48f5a2b</code></a> release(turborepo): 2.8.10-canary.6 (<a href="https://redirect.github.com/vercel/turborepo/issues/11885">#11885</a>)</li> <li><a href="https://github.com/vercel/turborepo/commit/8e3395ea80cb1366f6477d7765e27cde5437daae"><code>8e3395e</code></a> feat: Make <code>--profile</code> and <code>--anon-profile</code> filename optional (<a href="https://redirect.github.com/vercel/turborepo/issues/11883">#11883</a>)</li> <li><a href="https://github.com/vercel/turborepo/commit/5febe7f5ed99b4a838ad19e476eaadeb38c4e6c6"><code>5febe7f</code></a> release(turborepo): 2.8.10-canary.5 (<a href="https://redirect.github.com/vercel/turborepo/issues/11884">#11884</a>)</li> <li>Additional commits viewable in <a href="https://github.com/vercel/turborepo/compare/v2.8.9...v2.8.10">compare view</a></li> </ul> </details> <br /> Updates `eslint` from 10.0.0 to 10.0.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/eslint/eslint/releases">eslint's releases</a>.</em></p> <blockquote> <h2>v10.0.1</h2> <h2>Bug Fixes</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/c87d5bded54c5cf491eb04c24c9d09bbbd42c23e"><code>c87d5bd</code></a> fix: update eslint (<a href="https://redirect.github.com/eslint/eslint/issues/20531">#20531</a>) (renovate[bot])</li> <li><a href="https://github.com/eslint/eslint/commit/d84100115c14691691058f00779c94e74fca946a"><code>d841001</code></a> fix: update <code>minimatch</code> to <code>10.2.1</code> to address security vulnerabilities (<a href="https://redirect.github.com/eslint/eslint/issues/20519">#20519</a>) (루밀LuMir)</li> <li><a href="https://github.com/eslint/eslint/commit/04c21475b3004904948f02049f2888b401d82c78"><code>04c2147</code></a> fix: update error message for unused suppressions (<a href="https://redirect.github.com/eslint/eslint/issues/20496">#20496</a>) (fnx)</li> <li><a href="https://github.com/eslint/eslint/commit/38b089c1726feac0e31a31d47941bd99e29ce003"><code>38b089c</code></a> fix: update dependency <code>@eslint/config-array</code> to ^0.23.1 (<a href="https://redirect.github.com/eslint/eslint/issues/20484">#20484</a>) (renovate[bot])</li> </ul> <h2>Documentation</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/5b3dbce50a1404a9f118afe810cefeee79388a2a"><code>5b3dbce</code></a> docs: add AI acknowledgement section to templates (<a href="https://redirect.github.com/eslint/eslint/issues/20431">#20431</a>) (루밀LuMir)</li> <li><a href="https://github.com/eslint/eslint/commit/6f23076037d5879f20fb3be2ef094293b1e8d38c"><code>6f23076</code></a> docs: toggle nav in no-JS mode (<a href="https://redirect.github.com/eslint/eslint/issues/20476">#20476</a>) (Tanuj Kanti)</li> <li><a href="https://github.com/eslint/eslint/commit/b69cfb32a16c5d5e9986390d484fae1d21e406f9"><code>b69cfb3</code></a> docs: Update README (GitHub Actions Bot)</li> </ul> <h2>Chores</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/e5c281ffd038a3a7a3e5364db0b9378e0ad83020"><code>e5c281f</code></a> chore: updates for v9.39.3 release (Jenkins)</li> <li><a href="https://github.com/eslint/eslint/commit/8c3832adb77cd993b4a24891900d5eeaaf093cdc"><code>8c3832a</code></a> chore: update <code>@typescript-eslint/parser</code> to ^8.56.0 (<a href="https://redirect.github.com/eslint/eslint/issues/20514">#20514</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/8330d238ae6adb68bb6a1c9381e38cfedd990d94"><code>8330d23</code></a> test: add tests for config-api (<a href="https://redirect.github.com/eslint/eslint/issues/20493">#20493</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/37d6e91e88fa6a2ca6d8726679096acff21ba6cc"><code>37d6e91</code></a> chore: remove eslint v10 prereleases from eslint-config-eslint deps (<a href="https://redirect.github.com/eslint/eslint/issues/20494">#20494</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/da7cd0e79197ad16e17052eef99df141de6dbfb1"><code>da7cd0e</code></a> refactor: cleanup error message templates (<a href="https://redirect.github.com/eslint/eslint/issues/20479">#20479</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/84fb885d49ac810e79a9491276b4828b53d913e5"><code>84fb885</code></a> chore: package.json update for <code>@eslint/js</code> release (Jenkins)</li> <li><a href="https://github.com/eslint/eslint/commit/1f667344b57c4c09b548d94bcfac1f91b6e5c63d"><code>1f66734</code></a> chore: add <code>eslint</code> to <code>peerDependencies</code> of <code>@eslint/js</code> (<a href="https://redirect.github.com/eslint/eslint/issues/20467">#20467</a>) (Milos Djermanovic)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/eslint/eslint/commit/0bd54976080936ce080ee2552d504180105593b4"><code>0bd5497</code></a> 10.0.1</li> <li><a href="https://github.com/eslint/eslint/commit/ddb80ef7c78adbc3fb784e33f500d321e84ab51e"><code>ddb80ef</code></a> Build: changelog update for 10.0.1</li> <li><a href="https://github.com/eslint/eslint/commit/c87d5bded54c5cf491eb04c24c9d09bbbd42c23e"><code>c87d5bd</code></a> fix: update eslint (<a href="https://redirect.github.com/eslint/eslint/issues/20531">#20531</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/e5c281ffd038a3a7a3e5364db0b9378e0ad83020"><code>e5c281f</code></a> chore: updates for v9.39.3 release</li> <li><a href="https://github.com/eslint/eslint/commit/d84100115c14691691058f00779c94e74fca946a"><code>d841001</code></a> fix: update <code>minimatch</code> to <code>10.2.1</code> to address security vulnerabilities (<a href="https://redirect.github.com/eslint/eslint/issues/20519">#20519</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/8c3832adb77cd993b4a24891900d5eeaaf093cdc"><code>8c3832a</code></a> chore: update <code>@typescript-eslint/parser</code> to ^8.56.0 (<a href="https://redirect.github.com/eslint/eslint/issues/20514">#20514</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/5b3dbce50a1404a9f118afe810cefeee79388a2a"><code>5b3dbce</code></a> docs: add AI acknowledgement section to templates (<a href="https://redirect.github.com/eslint/eslint/issues/20431">#20431</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/04c21475b3004904948f02049f2888b401d82c78"><code>04c2147</code></a> fix: update error message for unused suppressions (<a href="https://redirect.github.com/eslint/eslint/issues/20496">#20496</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/8330d238ae6adb68bb6a1c9381e38cfedd990d94"><code>8330d23</code></a> test: add tests for config-api (<a href="https://redirect.github.com/eslint/eslint/issues/20493">#20493</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/37d6e91e88fa6a2ca6d8726679096acff21ba6cc"><code>37d6e91</code></a> chore: remove eslint v10 prereleases from eslint-config-eslint deps (<a href="https://redirect.github.com/eslint/eslint/issues/20494">#20494</a>)</li> <li>Additional commits viewable in <a href="https://github.com/eslint/eslint/compare/v10.0.0...v10.0.1">compare view</a></li> </ul> </details> <br /> Updates `@langchain/core` from 1.1.24 to 1.1.27 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/langchain-ai/langchainjs/releases"><code>@langchain/core</code>'s releases</a>.</em></p> <blockquote> <h2><code>@langchain/core</code><a href="https://github.com/1"><code>@1</code></a>.1.26</h2> <h3>Patch Changes</h3> <ul> <li><a href="https://redirect.github.com/langchain-ai/langchainjs/pull/10085">#10085</a> <a href="https://github.com/langchain-ai/langchainjs/commit/ed6ea53c38a004b65e30c0f5888a0ac7d8ee7028"><code>ed6ea53</code></a> Thanks <a href="https://github.com/colifran"><code>@colifran</code></a>! - fix(google): tool_calls are not preserved when concatenating AIMessageChunks</li> </ul> <h2><code>@langchain/core</code><a href="https://github.com/1"><code>@1</code></a>.1.25</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/langchain-ai/langchainjs/pull/10002">#10002</a> <a href="https://github.com/langchain-ai/langchainjs/commit/27186c54884cfe7c2522fa50b42c3ca0ccaefdba"><code>27186c5</code></a> Thanks <a href="https://github.com/aditya-gg04"><code>@aditya-gg04</code></a>! - fix(core): support reasoning/thinking blocks in StringOutputParser</p> </li> <li> <p><a href="https://redirect.github.com/langchain-ai/langchainjs/pull/10077">#10077</a> <a href="https://github.com/langchain-ai/langchainjs/commit/05396f7ce0a91c49a3bae4bbcd3dbdd6cbd18089"><code>05396f7</code></a> Thanks <a href="https://github.com/christian-bromann"><code>@christian-bromann</code></a>! - feat(core): add ContextOverflowError, raise in anthropic and openai</p> </li> <li> <p><a href="https://redirect.github.com/langchain-ai/langchainjs/pull/10081">#10081</a> <a href="https://github.com/langchain-ai/langchainjs/commit/5a6f26bbaed80195dc538c538b96219a8b03f38f"><code>5a6f26b</code></a> Thanks <a href="https://github.com/hntrl"><code>@hntrl</code></a>! - feat(core): add namespace-based symbol branding for error class hierarchies</p> <p>Introduces <code>createNamespace</code> utility for hierarchical symbol-based branding of class hierarchies. All LangChain error classes now use this pattern, replacing hand-rolled duck-type <code>isInstance</code> checks with reliable cross-realm <code>Symbol.for</code>-based identity.</p> <ul> <li>New <code>LangChainError</code> base class that all LangChain errors extend</li> <li>New <code>createNamespace</code> / <code>Namespace</code> API in <code>@langchain/core/utils/namespace</code></li> <li>Refactored <code>ModelAbortError</code>, <code>ContextOverflowError</code> to use namespace branding</li> <li>Added <code>ContextOverflowError.fromError()</code> static factory method</li> <li>Deprecated <code>addLangChainErrorFields</code> in favor of <code>LangChainError</code> subclasses</li> <li>Migrated Google provider errors (<code>GoogleError</code>, <code>ConfigurationError</code>, etc.) to namespace branding</li> <li>Updated Anthropic and OpenAI providers to use <code>ContextOverflowError.fromError()</code></li> </ul> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/langchain-ai/langchainjs/commits">compare view</a></li> </ul> </details> <br /> Updates `@langchain/langgraph` from 1.1.4 to 1.1.5 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/langchain-ai/langgraphjs/releases"><code>@langchain/langgraph</code>'s releases</a>.</em></p> <blockquote> <h2><code>@langchain/langgraph-checkpoint-mongodb</code><a href="https://github.com/1"><code>@1</code></a>.1.5</h2> <h3>Patch Changes</h3> <ul> <li><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/1856">#1856</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/a9fa28b6adad16050fcf5d5876a3924253664217"><code>a9fa28b</code></a> Thanks <a href="https://github.com/christian-bromann"><code>@christian-bromann</code></a>! - retry release: Updates the checkpoint-mongodb to append client metadata</li> </ul> <h2><code>@langchain/langgraph</code><a href="https://github.com/1"><code>@1</code></a>.1.5</h2> <h3>Patch Changes</h3> <ul> <li>Updated dependencies [<a href="https://github.com/langchain-ai/langgraphjs/commit/242cfbbb6ab375c91bd021f64ec652840af591a9"><code>242cfbb</code></a>]: <ul> <li><code>@langchain/langgraph-sdk</code><a href="https://github.com/2"><code>@2</code></a>.0.0</li> </ul> </li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/langchain-ai/langgraphjs/blob/main/libs/langgraph-core/CHANGELOG.md"><code>@langchain/langgraph</code>'s changelog</a>.</em></p> <blockquote> <h2>1.1.5</h2> <h3>Patch Changes</h3> <ul> <li>Updated dependencies [<a href="https://github.com/langchain-ai/langgraphjs/commit/242cfbbb6ab375c91bd021f64ec652840af591a9"><code>242cfbb</code></a>]: <ul> <li><code>@langchain/langgraph-sdk</code><a href="https://github.com/2"><code>@2</code></a>.0.0</li> </ul> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/langchain-ai/langgraphjs/commit/f38b91c6ede1ca8416034825f3d80f3f9a4700ff"><code>f38b91c</code></a> chore: version packages (<a href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/1974">#1974</a>)</li> <li>See full diff in <a href="https://github.com/langchain-ai/langgraphjs/commits/@langchain/langgraph@1.1.5/libs/langgraph-core">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Trusted by companies shaping the future of agents – including Klarna, Replit, Elastic, and more – LangGraph is a low-level orchestration framework for building, managing, and deploying long-running, stateful agents.
Get started
Install LangGraph:
pip install -U langgraph
Create a simple workflow:
from langgraph.graph import START, StateGraph
from typing_extensions import TypedDict
class State(TypedDict):
text: str
def node_a(state: State) -> dict:
return {"text": state["text"] + "a"}
def node_b(state: State) -> dict:
return {"text": state["text"] + "b"}
graph = StateGraph(State)
graph.add_node("node_a", node_a)
graph.add_node("node_b", node_b)
graph.add_edge(START, "node_a")
graph.add_edge("node_a", "node_b")
print(graph.compile().invoke({"text": ""}))
# {'text': 'ab'}
Get started with the LangGraph Quickstart.
To quickly build agents with LangChain's create_agent (built on LangGraph), see the LangChain Agents documentation.
Core benefits
LangGraph provides low-level supporting infrastructure for any long-running, stateful workflow or agent. LangGraph does not abstract prompts or architecture, and provides the following central benefits:
- Durable execution: Build agents that persist through failures and can run for extended periods, automatically resuming from exactly where they left off.
- Human-in-the-loop: Seamlessly incorporate human oversight by inspecting and modifying agent state at any point during execution.
- Comprehensive memory: Create truly stateful agents with both short-term working memory for ongoing reasoning and long-term persistent memory across sessions.
- Debugging with LangSmith: Gain deep visibility into complex agent behavior with visualization tools that trace execution paths, capture state transitions, and provide detailed runtime metrics.
- Production-ready deployment: Deploy sophisticated agent systems confidently with scalable infrastructure designed to handle the unique challenges of stateful, long-running workflows.
LangGraph’s ecosystem
While LangGraph can be used standalone, it also integrates seamlessly with any LangChain product, giving developers a full suite of tools for building agents. To improve your LLM application development, pair LangGraph with:
- LangSmith — Helpful for agent evals and observability. Debug poor-performing LLM app runs, evaluate agent trajectories, gain visibility in production, and improve performance over time.
- LangSmith Deployment — Deploy and scale agents effortlessly with a purpose-built deployment platform for long running, stateful workflows. Discover, reuse, configure, and share agents across teams — and iterate quickly with visual prototyping in LangGraph Studio.
- LangChain – Provides integrations and composable components to streamline LLM application development.
Note
Looking for the JS version of LangGraph? See the JS repo and the JS docs.
Additional resources
- Guides: Quick, actionable code snippets for topics such as streaming, adding memory & persistence, and design patterns (e.g. branching, subgraphs, etc.).
- Reference: Detailed reference on core classes, methods, how to use the graph and checkpointing APIs, and higher-level prebuilt components.
- Examples: Guided examples on getting started with LangGraph.
- LangChain Forum: Connect with the community and share all of your technical questions, ideas, and feedback.
- LangChain Academy: Learn the basics of LangGraph in our free, structured course.
- Case studies: Hear how industry leaders use LangGraph to ship AI applications at scale.
Acknowledgements
LangGraph is inspired by Pregel and Apache Beam. The public interface draws inspiration from NetworkX. LangGraph is built by LangChain Inc, the creators of LangChain, but can be used without LangChain.