flowchart TD
S(["START"]) --> M["Model requests flight, hotel and car"]
subgraph Worker["Original Python process: killed during car"]
M
subgraph Executions["Three Send task executions of ONE registered tools node"]
F["tools task: flight call
Returned; messages write persisted"]
H["tools task: hotel call
Returned; messages write persisted"]
C["tools task: car call
Blocked before effect; no result write"]
end
M -->|"Send: flight call"| F
M -->|"Send: hotel call"| H
M -->|"Send: car call"| C
C -.-> K["HARD KILL"]
end
P[("Persistent graph storage outside worker
Full checkpoint: loop / 1
Flight and hotel task writes saved")]
B[("Separate booking store outside worker
Flight and hotel committed; no car")]
M -.->|"checkpoint before tool superstep"| P
F -.->|"messages: flight ToolMessage"| P
H -.->|"messages: hotel ToolMessage"| P
F -.->|"flight booking"| B
H -.->|"hotel booking"| B
P --> O["Replacement worker process opens same saved thread
Inspection alone does not run work"]
O --> I["Caller explicitly invokes None"]
I --> R["Reuse flight and hotel writes
Execute unfinished car task"]
classDef saved fill:#d8f3dc,stroke:#327546,color:#163d23
classDef stopped fill:#ffe4cc,stroke:#a64b00,color:#4d2300
class F,H saved
class C,K stopped