Feature: LangGraph nodes coverage boost Scenarios targeting specific uncovered lines in nodes.py # Line 130 – execute() else branch when NodeType is unrecognised Scenario: Unknown node type falls through to empty result Given a node whose type is patched to an unrecognised value When I execute the unknown-type node Then the result should contain current_node and nothing else # Line 176 – ToolAgent branch with empty current_message falls back to last message Scenario: ToolAgent with empty current_message falls back to last message content Given a ToolAgent node with an empty current_message and messages in state When I execute the ToolAgent fallback node Then the ToolAgent should receive the last message content as input # Line 270 – _execute_function raises when function is not callable Scenario: Function node raises when the registered object is not callable Given a function node whose registered object is not callable When I execute the non-callable function node Then the result should report a not-callable error # Lines 319, 321-322 – message router rules with null target / null condition Scenario: Message router skips rules with null target Given a message router with a rule that has no target When I execute the null-target router Then the router should return routed_to as None Scenario: Message router matches unconditional rule Given a message router with an unconditional rule targeting "default_dest" When I execute the unconditional router Then the router should route to "default_dest" Scenario: Message router skips null-target then matches unconditional rule Given a message router with a null-target rule followed by an unconditional rule to "fallback" When I execute the mixed-rules router Then the router should route to "fallback" # Line 337 – evaluate_edge_condition returns True for edge without condition Scenario: Edge without condition evaluates to true Given an edge with no condition When I evaluate the unconditioned edge Then the edge evaluation should return true