psycopg.errors.UniqueViolation: duplicate key value violates unique constraint "run_pkey" #920

Closed
opened 2026-02-20 17:42:23 -05:00 by yindo · 1 comment
Owner

Originally created by @areebaayub29 on GitHub (Aug 17, 2025).

Checked other resources

  • This is a bug, not a usage question. For questions, please use the LangChain Forum (https://forum.langchain.com/).
  • I added a clear and detailed title that summarizes the issue.
  • I read what a minimal reproducible example is (https://stackoverflow.com/help/minimal-reproducible-example).
  • I included a self-contained, minimal example that demonstrates the issue INCLUDING all the relevant imports. The code run AS IS to reproduce the issue.

Example Code

API i am using:
/threads/{thread_id}/runs/wait

Error Message and Stack Trace (if applicable)

8/18/2025, 5:11:05 AM Exception in ASGI application

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
    return await self.app(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
    raise exc
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 85, in __call__
    await self.app(scope, receive, send)
  File "/api/langgraph_api/middleware/http_logger.py", line 75, in __call__
  File "/api/langgraph_api/middleware/http_logger.py", line 69, in __call__
  File "/api/langgraph_api/middleware/request_id.py", line 35, in __call__
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 716, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 736, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 462, in handle
    await self.app(scope, receive, send)
  File "/api/langgraph_api/auth/middleware.py", line 49, in __call__
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/authentication.py", line 48, in __call__
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 716, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 736, in app
    await route.handle(scope, receive, send)
  File "/api/langgraph_api/route.py", line 143, in handle
  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 290, in handle
    await self.app(scope, receive, send)
  File "/api/langgraph_api/route.py", line 50, in app
  File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/api/langgraph_api/route.py", line 43, in app
  File "/usr/local/lib/python3.11/site-packages/langgraph_runtime_postgres/retry.py", line 44, in wrapper
  File "/api/langgraph_api/api/runs.py", line 181, in wait_run
  File "/api/langgraph_api/models/run.py", line 346, in create_valid_run
  File "/usr/local/lib/python3.11/site-packages/langgraph_runtime_postgres/ops.py", line 2438, in put
  File "/usr/local/lib/python3.11/site-packages/psycopg/connection_async.py", line 276, in execute
    raise ex.with_traceback(None)
psycopg.errors.UniqueViolation: duplicate key value violates unique constraint "run_pkey"
DETAIL:  Key (run_id)=(1f07bc7d-5457-654d-8d82-d58cbc6364dc) already exists.
8/18/2025, 5:11:05 AM POST /threads/40b1eacb-1b1d-56c0-bde4-6d1828ca3deb/runs/wait 500 111ms

Description

I am using "/threads/{thread_id}/runs/wait" api to create thread, on first hit graph invocation runs fine, i get the output on second hit is says that run id already exists.
when i am trying to find the run id in tracing project it not there.

listing my versions:
python = ">=3.11,<3.13"
langgraph = "^0.6.0"
langgraph-cli = { version = "^0.3.6", extras = ["inmem"] }
langgraph-prebuilt = "^0.6.0"
langgraph-sdk = "^0.2.0"
langsmith = "^0.3.15"

PS: we use delete threads api frequently too.

System Info

System Information

OS: Linux
OS Version: #68~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 15 18:06:34 UTC 2
Python Version: 3.11.4 (main, Nov 26 2024, 19:51:13) [GCC 11.4.0]

Package Information

langchain_core: 0.3.72
langchain: 0.3.27
langchain_community: 0.3.27
langsmith: 0.3.45
langchain_openai: 0.3.28
langchain_pinecone: 0.2.11
langchain_tests: 0.3.20
langchain_text_splitters: 0.3.9
langgraph_api: 0.2.110
langgraph_cli: 0.3.6
langgraph_license: Installed. No version info available.
langgraph_runtime: Installed. No version info available.
langgraph_runtime_inmem: 0.6.5
langgraph_sdk: 0.2.0

Optional packages not installed

langserve

Other Dependencies

aiohttp<4.0.0,>=3.8.3: Installed. No version info available.
async-timeout<5.0.0,>=4.0.0;: Installed. No version info available.
blockbuster<2.0.0,>=1.5.24: Installed. No version info available.
click>=8.1.7: Installed. No version info available.
cloudpickle>=3.0.0: Installed. No version info available.
cryptography<45.0,>=42.0.0: Installed. No version info available.
dataclasses-json<0.7,>=0.5.7: Installed. No version info available.
httpx: 0.28.1
httpx-sse<1.0.0,>=0.4.0: Installed. No version info available.
httpx<1,>=0.25.0: Installed. No version info available.
httpx>=0.25.0: Installed. No version info available.
httpx>=0.25.2: Installed. No version info available.
jsonpatch<2.0,>=1.33: Installed. No version info available.
jsonschema-rs<0.30,>=0.20.0: Installed. No version info available.
langchain-anthropic;: Installed. No version info available.
langchain-aws;: Installed. No version info available.
langchain-azure-ai;: Installed. No version info available.
langchain-cohere;: Installed. No version info available.
langchain-community;: Installed. No version info available.
langchain-core<1.0.0,>=0.3.34: Installed. No version info available.
langchain-core<1.0.0,>=0.3.63: Installed. No version info available.
langchain-core<1.0.0,>=0.3.66: Installed. No version info available.
langchain-core<1.0.0,>=0.3.68: Installed. No version info available.
langchain-core<1.0.0,>=0.3.72: Installed. No version info available.
langchain-core>=0.3.64: Installed. No version info available.
langchain-deepseek;: Installed. No version info available.
langchain-fireworks;: Installed. No version info available.
langchain-google-genai;: Installed. No version info available.
langchain-google-vertexai;: Installed. No version info available.
langchain-groq;: Installed. No version info available.
langchain-huggingface;: Installed. No version info available.
langchain-mistralai;: Installed. No version info available.
langchain-ollama;: Installed. No version info available.
langchain-openai;: Installed. No version info available.
langchain-openai>=0.3.11: Installed. No version info available.
langchain-perplexity;: Installed. No version info available.
langchain-tests<1.0.0,>=0.3.7: Installed. No version info available.
langchain-text-splitters<1.0.0,>=0.3.9: Installed. No version info available.
langchain-together;: Installed. No version info available.
langchain-xai;: Installed. No version info available.
langchain<1.0.0,>=0.3.26: Installed. No version info available.
langgraph-api<0.3.0,>=0.2.67;: Installed. No version info available.
langgraph-checkpoint>=2.0.23: Installed. No version info available.
langgraph-checkpoint>=2.0.25: Installed. No version info available.
langgraph-runtime-inmem<0.7,>=0.6.5: Installed. No version info available.
langgraph-runtime-inmem>=0.6.0;: Installed. No version info available.
langgraph-sdk>=0.1.0;: Installed. No version info available.
langgraph-sdk>=0.2.0: Installed. No version info available.
langgraph>=0.2: Installed. No version info available.
langgraph>=0.4.0: Installed. No version info available.
langsmith-pyo3: Installed. No version info available.
langsmith>=0.1.125: Installed. No version info available.
langsmith>=0.1.17: Installed. No version info available.
langsmith>=0.3.45: Installed. No version info available.
numpy>=1.26.2;: Installed. No version info available.
numpy>=1.26.4: Installed. No version info available.
numpy>=2.1.0;: Installed. No version info available.
openai-agents: Installed. No version info available.
openai<2.0.0,>=1.86.0: Installed. No version info available.
opentelemetry-api: Installed. No version info available.
opentelemetry-exporter-otlp-proto-http: Installed. No version info available.
opentelemetry-sdk: Installed. No version info available.
orjson: 3.10.18
orjson>=3.10.1: Installed. No version info available.
orjson>=3.9.7: Installed. No version info available.
packaging: 24.2
packaging>=23.2: Installed. No version info available.
pinecone[asyncio]<8.0.0,>=6.0.0: Installed. No version info available.
pydantic: 2.11.7
pydantic-settings<3.0.0,>=2.4.0: Installed. No version info available.
pydantic<3.0.0,>=2.7.4: Installed. No version info available.
pydantic>=2.7.4: Installed. No version info available.
pyjwt>=2.9.0: Installed. No version info available.
pytest: 8.4.1
pytest-asyncio<1,>=0.20: Installed. No version info available.
pytest-benchmark: 5.1.0
pytest-codspeed: 3.2.0
pytest-recording: 0.13.4
pytest-socket<1,>=0.6.0: Installed. No version info available.
pytest<9,>=7: Installed. No version info available.
python-dotenv>=0.8.0;: Installed. No version info available.
PyYAML>=5.3: Installed. No version info available.
requests: 2.32.4
requests-toolbelt: 1.0.0
requests<3,>=2: Installed. No version info available.
rich: 14.0.0
SQLAlchemy<3,>=1.4: Installed. No version info available.
sse-starlette<2.2.0,>=2.1.0: Installed. No version info available.
sse-starlette>=2: Installed. No version info available.
starlette>=0.37: Installed. No version info available.
starlette>=0.38.6: Installed. No version info available.
structlog<26,>=24.1.0: Installed. No version info available.
structlog>23: Installed. No version info available.
syrupy<5,>=4: Installed. No version info available.
tenacity!=8.4.0,<10,>=8.1.0: Installed. No version info available.
tenacity!=8.4.0,<10.0.0,>=8.1.0: Installed. No version info available.
tenacity>=8.0.0: Installed. No version info available.
tiktoken<1,>=0.7: Installed. No version info available.
truststore>=0.1: Installed. No version info available.
typing-extensions>=4.7: Installed. No version info available.
uvicorn>=0.26.0: Installed. No version info available.
vcrpy>=7.0: Installed. No version info available.
watchfiles>=0.13: Installed. No version info available.
zstandard: 0.23.0

Originally created by @areebaayub29 on GitHub (Aug 17, 2025). ### Checked other resources - [x] This is a bug, not a usage question. For questions, please use the LangChain Forum (https://forum.langchain.com/). - [x] I added a clear and detailed title that summarizes the issue. - [x] I read what a minimal reproducible example is (https://stackoverflow.com/help/minimal-reproducible-example). - [x] I included a self-contained, minimal example that demonstrates the issue INCLUDING all the relevant imports. The code run AS IS to reproduce the issue. ### Example Code ```python API i am using: /threads/{thread_id}/runs/wait ``` ### Error Message and Stack Trace (if applicable) ```shell 8/18/2025, 5:11:05 AM Exception in ASGI application Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__ return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 113, in __call__ await self.middleware_stack(scope, receive, send) File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__ raise exc File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__ await self.app(scope, receive, _send) File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 85, in __call__ await self.app(scope, receive, send) File "/api/langgraph_api/middleware/http_logger.py", line 75, in __call__ File "/api/langgraph_api/middleware/http_logger.py", line 69, in __call__ File "/api/langgraph_api/middleware/request_id.py", line 35, in __call__ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 63, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 716, in __call__ await self.middleware_stack(scope, receive, send) File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 736, in app await route.handle(scope, receive, send) File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 462, in handle await self.app(scope, receive, send) File "/api/langgraph_api/auth/middleware.py", line 49, in __call__ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/authentication.py", line 48, in __call__ await self.app(scope, receive, send) File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 716, in __call__ await self.middleware_stack(scope, receive, send) File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 736, in app await route.handle(scope, receive, send) File "/api/langgraph_api/route.py", line 143, in handle File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 290, in handle await self.app(scope, receive, send) File "/api/langgraph_api/route.py", line 50, in app File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/api/langgraph_api/route.py", line 43, in app File "/usr/local/lib/python3.11/site-packages/langgraph_runtime_postgres/retry.py", line 44, in wrapper File "/api/langgraph_api/api/runs.py", line 181, in wait_run File "/api/langgraph_api/models/run.py", line 346, in create_valid_run File "/usr/local/lib/python3.11/site-packages/langgraph_runtime_postgres/ops.py", line 2438, in put File "/usr/local/lib/python3.11/site-packages/psycopg/connection_async.py", line 276, in execute raise ex.with_traceback(None) psycopg.errors.UniqueViolation: duplicate key value violates unique constraint "run_pkey" DETAIL: Key (run_id)=(1f07bc7d-5457-654d-8d82-d58cbc6364dc) already exists. 8/18/2025, 5:11:05 AM POST /threads/40b1eacb-1b1d-56c0-bde4-6d1828ca3deb/runs/wait 500 111ms ``` ### Description I am using "/threads/{thread_id}/runs/wait" api to create thread, on first hit graph invocation runs fine, i get the output on second hit is says that run id already exists. when i am trying to find the run id in tracing project it not there. listing my versions: python = ">=3.11,<3.13" langgraph = "^0.6.0" langgraph-cli = { version = "^0.3.6", extras = ["inmem"] } langgraph-prebuilt = "^0.6.0" langgraph-sdk = "^0.2.0" langsmith = "^0.3.15" PS: we use delete threads api frequently too. ### System Info System Information ------------------ > OS: Linux > OS Version: #68~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 15 18:06:34 UTC 2 > Python Version: 3.11.4 (main, Nov 26 2024, 19:51:13) [GCC 11.4.0] Package Information ------------------- > langchain_core: 0.3.72 > langchain: 0.3.27 > langchain_community: 0.3.27 > langsmith: 0.3.45 > langchain_openai: 0.3.28 > langchain_pinecone: 0.2.11 > langchain_tests: 0.3.20 > langchain_text_splitters: 0.3.9 > langgraph_api: 0.2.110 > langgraph_cli: 0.3.6 > langgraph_license: Installed. No version info available. > langgraph_runtime: Installed. No version info available. > langgraph_runtime_inmem: 0.6.5 > langgraph_sdk: 0.2.0 Optional packages not installed ------------------------------- > langserve Other Dependencies ------------------ > aiohttp<4.0.0,>=3.8.3: Installed. No version info available. > async-timeout<5.0.0,>=4.0.0;: Installed. No version info available. > blockbuster<2.0.0,>=1.5.24: Installed. No version info available. > click>=8.1.7: Installed. No version info available. > cloudpickle>=3.0.0: Installed. No version info available. > cryptography<45.0,>=42.0.0: Installed. No version info available. > dataclasses-json<0.7,>=0.5.7: Installed. No version info available. > httpx: 0.28.1 > httpx-sse<1.0.0,>=0.4.0: Installed. No version info available. > httpx<1,>=0.25.0: Installed. No version info available. > httpx>=0.25.0: Installed. No version info available. > httpx>=0.25.2: Installed. No version info available. > jsonpatch<2.0,>=1.33: Installed. No version info available. > jsonschema-rs<0.30,>=0.20.0: Installed. No version info available. > langchain-anthropic;: Installed. No version info available. > langchain-aws;: Installed. No version info available. > langchain-azure-ai;: Installed. No version info available. > langchain-cohere;: Installed. No version info available. > langchain-community;: Installed. No version info available. > langchain-core<1.0.0,>=0.3.34: Installed. No version info available. > langchain-core<1.0.0,>=0.3.63: Installed. No version info available. > langchain-core<1.0.0,>=0.3.66: Installed. No version info available. > langchain-core<1.0.0,>=0.3.68: Installed. No version info available. > langchain-core<1.0.0,>=0.3.72: Installed. No version info available. > langchain-core>=0.3.64: Installed. No version info available. > langchain-deepseek;: Installed. No version info available. > langchain-fireworks;: Installed. No version info available. > langchain-google-genai;: Installed. No version info available. > langchain-google-vertexai;: Installed. No version info available. > langchain-groq;: Installed. No version info available. > langchain-huggingface;: Installed. No version info available. > langchain-mistralai;: Installed. No version info available. > langchain-ollama;: Installed. No version info available. > langchain-openai;: Installed. No version info available. > langchain-openai>=0.3.11: Installed. No version info available. > langchain-perplexity;: Installed. No version info available. > langchain-tests<1.0.0,>=0.3.7: Installed. No version info available. > langchain-text-splitters<1.0.0,>=0.3.9: Installed. No version info available. > langchain-together;: Installed. No version info available. > langchain-xai;: Installed. No version info available. > langchain<1.0.0,>=0.3.26: Installed. No version info available. > langgraph-api<0.3.0,>=0.2.67;: Installed. No version info available. > langgraph-checkpoint>=2.0.23: Installed. No version info available. > langgraph-checkpoint>=2.0.25: Installed. No version info available. > langgraph-runtime-inmem<0.7,>=0.6.5: Installed. No version info available. > langgraph-runtime-inmem>=0.6.0;: Installed. No version info available. > langgraph-sdk>=0.1.0;: Installed. No version info available. > langgraph-sdk>=0.2.0: Installed. No version info available. > langgraph>=0.2: Installed. No version info available. > langgraph>=0.4.0: Installed. No version info available. > langsmith-pyo3: Installed. No version info available. > langsmith>=0.1.125: Installed. No version info available. > langsmith>=0.1.17: Installed. No version info available. > langsmith>=0.3.45: Installed. No version info available. > numpy>=1.26.2;: Installed. No version info available. > numpy>=1.26.4: Installed. No version info available. > numpy>=2.1.0;: Installed. No version info available. > openai-agents: Installed. No version info available. > openai<2.0.0,>=1.86.0: Installed. No version info available. > opentelemetry-api: Installed. No version info available. > opentelemetry-exporter-otlp-proto-http: Installed. No version info available. > opentelemetry-sdk: Installed. No version info available. > orjson: 3.10.18 > orjson>=3.10.1: Installed. No version info available. > orjson>=3.9.7: Installed. No version info available. > packaging: 24.2 > packaging>=23.2: Installed. No version info available. > pinecone[asyncio]<8.0.0,>=6.0.0: Installed. No version info available. > pydantic: 2.11.7 > pydantic-settings<3.0.0,>=2.4.0: Installed. No version info available. > pydantic<3.0.0,>=2.7.4: Installed. No version info available. > pydantic>=2.7.4: Installed. No version info available. > pyjwt>=2.9.0: Installed. No version info available. > pytest: 8.4.1 > pytest-asyncio<1,>=0.20: Installed. No version info available. > pytest-benchmark: 5.1.0 > pytest-codspeed: 3.2.0 > pytest-recording: 0.13.4 > pytest-socket<1,>=0.6.0: Installed. No version info available. > pytest<9,>=7: Installed. No version info available. > python-dotenv>=0.8.0;: Installed. No version info available. > PyYAML>=5.3: Installed. No version info available. > requests: 2.32.4 > requests-toolbelt: 1.0.0 > requests<3,>=2: Installed. No version info available. > rich: 14.0.0 > SQLAlchemy<3,>=1.4: Installed. No version info available. > sse-starlette<2.2.0,>=2.1.0: Installed. No version info available. > sse-starlette>=2: Installed. No version info available. > starlette>=0.37: Installed. No version info available. > starlette>=0.38.6: Installed. No version info available. > structlog<26,>=24.1.0: Installed. No version info available. > structlog>23: Installed. No version info available. > syrupy<5,>=4: Installed. No version info available. > tenacity!=8.4.0,<10,>=8.1.0: Installed. No version info available. > tenacity!=8.4.0,<10.0.0,>=8.1.0: Installed. No version info available. > tenacity>=8.0.0: Installed. No version info available. > tiktoken<1,>=0.7: Installed. No version info available. > truststore>=0.1: Installed. No version info available. > typing-extensions>=4.7: Installed. No version info available. > uvicorn>=0.26.0: Installed. No version info available. > vcrpy>=7.0: Installed. No version info available. > watchfiles>=0.13: Installed. No version info available. > zstandard: 0.23.0
yindo added the bugpending labels 2026-02-20 17:42:23 -05:00
yindo closed this issue 2026-02-20 17:42:23 -05:00
Author
Owner

@areebaayub29 commented on GitHub (Aug 18, 2025):

we have upgraded few packages

  • Updating langgraph-runtime-inmem (0.6.5 → 0.6.13)
  • Updating langgraph-api (0.2.110 → 0.2.132)
@areebaayub29 commented on GitHub (Aug 18, 2025): we have upgraded few packages - Updating langgraph-runtime-inmem (0.6.5 → 0.6.13) - Updating langgraph-api (0.2.110 → 0.2.132)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langchain-ai/langgraph#920