Where: framework/eino_toolloop.go:185-189
When generate returns msg == nil, the loop takes naturalFinish with empty content.
If this happens after one or more tool rounds, tools have already executed but the final answer is empty — the user gets a blank reply instead of the wind-down fallback.
msg == nil should be treated as an abnormal termination that triggers wind-down, not as a normal natural finish.
Where: framework/eino_toolloop.go:185-189
When generate returns msg == nil, the loop takes naturalFinish with empty content.
If this happens after one or more tool rounds, tools have already executed but the final answer is empty — the user gets a blank reply instead of the wind-down fallback.
msg == nil should be treated as an abnormal termination that triggers wind-down, not as a normal natural finish.