diff --git a/libs/langgraph/pyproject.toml b/libs/langgraph/pyproject.toml
index da8de4636..714007045 100644
--- a/libs/langgraph/pyproject.toml
+++ b/libs/langgraph/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "langgraph"
-version = "0.2.16"
+version = "0.2.17"
description = "Building stateful, multi-actor applications with LLMs"
authors = []
license = "MIT"
diff --git a/libs/langgraph/tests/__snapshots__/test_pregel.ambr b/libs/langgraph/tests/__snapshots__/test_pregel.ambr
index bbf8a06cb..3d8d085ef 100644
--- a/libs/langgraph/tests/__snapshots__/test_pregel.ambr
+++ b/libs/langgraph/tests/__snapshots__/test_pregel.ambr
@@ -4779,18 +4779,18 @@
tool_two___end__(__end__)
tool_three(tool_three)
__end__([__end__]):::last
- __start__ -.-> tool_one;
- tool_one --> __end__;
- __start__ -.-> tool_two___start__;
- tool_two___end__ --> __end__;
- __start__ -.-> tool_three;
- tool_three --> __end__;
subgraph tool_two
tool_two___start__ -.-> tool_two_tool_two_slow;
tool_two_tool_two_slow --> tool_two___end__;
tool_two___start__ -.-> tool_two_tool_two_fast;
tool_two_tool_two_fast --> tool_two___end__;
end
+ __start__ -.-> tool_one;
+ tool_one --> __end__;
+ __start__ -.-> tool_two___start__;
+ tool_two___end__ --> __end__;
+ __start__ -.-> tool_three;
+ tool_three --> __end__;
classDef default fill:#f2f0ff,line-height:1.2
classDef first fill-opacity:0
classDef last fill:#bfb6fc
@@ -4965,6 +4965,7 @@
'''
graph TD;
__start__ --> Researcher;
+ Researcher -.  redo  .-> Researcher;
Researcher -.  continue  .-> Chart_Generator;
Researcher -.  call_tool  .-> Call_Tool;
Researcher -.  end  .-> __end__;
@@ -4973,7 +4974,6 @@
Chart_Generator -.  end  .-> __end__;
Call_Tool -.-> Researcher;
Call_Tool -.-> Chart_Generator;
- Researcher -.  redo  .-> Researcher;
'''
# ---
@@ -5134,15 +5134,15 @@
weather_graph_model_node(model_node)
weather_graph_weather_node(weather_node
__interrupt = before)
__end__([__end__]):::last
+ subgraph weather_graph
+ weather_graph_model_node --> weather_graph_weather_node;
+ end
__start__ --> router_node;
normal_llm_node --> __end__;
weather_graph_weather_node --> __end__;
router_node -.-> normal_llm_node;
router_node -.-> weather_graph_model_node;
router_node -.-> __end__;
- subgraph weather_graph
- weather_graph_model_node --> weather_graph_weather_node;
- end
classDef default fill:#f2f0ff,line-height:1.2
classDef first fill-opacity:0
classDef last fill:#bfb6fc
@@ -5159,15 +5159,15 @@
weather_graph_model_node(model_node)
weather_graph_weather_node(weather_node
__interrupt = before)
__end__([__end__]):::last
+ subgraph weather_graph
+ weather_graph_model_node --> weather_graph_weather_node;
+ end
__start__ --> router_node;
normal_llm_node --> __end__;
weather_graph_weather_node --> __end__;
router_node -.-> normal_llm_node;
router_node -.-> weather_graph_model_node;
router_node -.-> __end__;
- subgraph weather_graph
- weather_graph_model_node --> weather_graph_weather_node;
- end
classDef default fill:#f2f0ff,line-height:1.2
classDef first fill-opacity:0
classDef last fill:#bfb6fc
@@ -5184,15 +5184,15 @@
weather_graph_model_node(model_node)
weather_graph_weather_node(weather_node
__interrupt = before)
__end__([__end__]):::last
+ subgraph weather_graph
+ weather_graph_model_node --> weather_graph_weather_node;
+ end
__start__ --> router_node;
normal_llm_node --> __end__;
weather_graph_weather_node --> __end__;
router_node -.-> normal_llm_node;
router_node -.-> weather_graph_model_node;
router_node -.-> __end__;
- subgraph weather_graph
- weather_graph_model_node --> weather_graph_weather_node;
- end
classDef default fill:#f2f0ff,line-height:1.2
classDef first fill-opacity:0
classDef last fill:#bfb6fc
@@ -5209,15 +5209,15 @@
weather_graph_model_node(model_node)
weather_graph_weather_node(weather_node
__interrupt = before)
__end__([__end__]):::last
+ subgraph weather_graph
+ weather_graph_model_node --> weather_graph_weather_node;
+ end
__start__ --> router_node;
normal_llm_node --> __end__;
weather_graph_weather_node --> __end__;
router_node -.-> normal_llm_node;
router_node -.-> weather_graph_model_node;
router_node -.-> __end__;
- subgraph weather_graph
- weather_graph_model_node --> weather_graph_weather_node;
- end
classDef default fill:#f2f0ff,line-height:1.2
classDef first fill-opacity:0
classDef last fill:#bfb6fc
@@ -5234,15 +5234,15 @@
weather_graph_model_node(model_node)
weather_graph_weather_node(weather_node
__interrupt = before)
__end__([__end__]):::last
+ subgraph weather_graph
+ weather_graph_model_node --> weather_graph_weather_node;
+ end
__start__ --> router_node;
normal_llm_node --> __end__;
weather_graph_weather_node --> __end__;
router_node -.-> normal_llm_node;
router_node -.-> weather_graph_model_node;
router_node -.-> __end__;
- subgraph weather_graph
- weather_graph_model_node --> weather_graph_weather_node;
- end
classDef default fill:#f2f0ff,line-height:1.2
classDef first fill-opacity:0
classDef last fill:#bfb6fc
@@ -5260,16 +5260,16 @@
p_two_c_two(c_two)
p_two___end__(__end__)
__end__([__end__]):::last
- __start__ --> p_one;
- p_two___end__ --> p_one;
- p_one -.  0  .-> p_two___start__;
- p_one -.  1  .-> __end__;
subgraph p_two
p_two___start__ --> p_two_c_one;
p_two_c_two --> p_two_c_one;
p_two_c_one -.  0  .-> p_two_c_two;
p_two_c_one -.  1  .-> p_two___end__;
end
+ __start__ --> p_one;
+ p_two___end__ --> p_one;
+ p_one -.  0  .-> p_two___start__;
+ p_one -.  1  .-> __end__;
classDef default fill:#f2f0ff,line-height:1.2
classDef first fill-opacity:0
classDef last fill:#bfb6fc
diff --git a/libs/langgraph/tests/__snapshots__/test_pregel_async.ambr b/libs/langgraph/tests/__snapshots__/test_pregel_async.ambr
index 1b0f6c41d..3aaccffd1 100644
--- a/libs/langgraph/tests/__snapshots__/test_pregel_async.ambr
+++ b/libs/langgraph/tests/__snapshots__/test_pregel_async.ambr
@@ -1204,15 +1204,15 @@
weather_graph_model_node(model_node)
weather_graph_weather_node(weather_node
__interrupt = before)
__end__([__end__]):::last
+ subgraph weather_graph
+ weather_graph_model_node --> weather_graph_weather_node;
+ end
__start__ --> router_node;
normal_llm_node --> __end__;
weather_graph_weather_node --> __end__;
router_node -.-> normal_llm_node;
router_node -.-> weather_graph_model_node;
router_node -.-> __end__;
- subgraph weather_graph
- weather_graph_model_node --> weather_graph_weather_node;
- end
classDef default fill:#f2f0ff,line-height:1.2
classDef first fill-opacity:0
classDef last fill:#bfb6fc
@@ -1229,15 +1229,15 @@
weather_graph_model_node(model_node)
weather_graph_weather_node(weather_node
__interrupt = before)
__end__([__end__]):::last
+ subgraph weather_graph
+ weather_graph_model_node --> weather_graph_weather_node;
+ end
__start__ --> router_node;
normal_llm_node --> __end__;
weather_graph_weather_node --> __end__;
router_node -.-> normal_llm_node;
router_node -.-> weather_graph_model_node;
router_node -.-> __end__;
- subgraph weather_graph
- weather_graph_model_node --> weather_graph_weather_node;
- end
classDef default fill:#f2f0ff,line-height:1.2
classDef first fill-opacity:0
classDef last fill:#bfb6fc
@@ -1254,15 +1254,15 @@
weather_graph_model_node(model_node)
weather_graph_weather_node(weather_node
__interrupt = before)
__end__([__end__]):::last
+ subgraph weather_graph
+ weather_graph_model_node --> weather_graph_weather_node;
+ end
__start__ --> router_node;
normal_llm_node --> __end__;
weather_graph_weather_node --> __end__;
router_node -.-> normal_llm_node;
router_node -.-> weather_graph_model_node;
router_node -.-> __end__;
- subgraph weather_graph
- weather_graph_model_node --> weather_graph_weather_node;
- end
classDef default fill:#f2f0ff,line-height:1.2
classDef first fill-opacity:0
classDef last fill:#bfb6fc
@@ -1279,15 +1279,15 @@
weather_graph_model_node(model_node)
weather_graph_weather_node(weather_node
__interrupt = before)
__end__([__end__]):::last
+ subgraph weather_graph
+ weather_graph_model_node --> weather_graph_weather_node;
+ end
__start__ --> router_node;
normal_llm_node --> __end__;
weather_graph_weather_node --> __end__;
router_node -.-> normal_llm_node;
router_node -.-> weather_graph_model_node;
router_node -.-> __end__;
- subgraph weather_graph
- weather_graph_model_node --> weather_graph_weather_node;
- end
classDef default fill:#f2f0ff,line-height:1.2
classDef first fill-opacity:0
classDef last fill:#bfb6fc
@@ -1304,15 +1304,15 @@
weather_graph_model_node(model_node)
weather_graph_weather_node(weather_node
__interrupt = before)
__end__([__end__]):::last
+ subgraph weather_graph
+ weather_graph_model_node --> weather_graph_weather_node;
+ end
__start__ --> router_node;
normal_llm_node --> __end__;
weather_graph_weather_node --> __end__;
router_node -.-> normal_llm_node;
router_node -.-> weather_graph_model_node;
router_node -.-> __end__;
- subgraph weather_graph
- weather_graph_model_node --> weather_graph_weather_node;
- end
classDef default fill:#f2f0ff,line-height:1.2
classDef first fill-opacity:0
classDef last fill:#bfb6fc