The bug was in the chunk.finished block inside stream_completion_with_tools.
When no tool was executed in the CURRENT iteration (!tool_executed), the code
would return early without checking if tools were executed in PREVIOUS iterations
(any_tool_executed) and final_output was never called.
This caused the agent to terminate prematurely after executing tools like
todo_read when the LLM responded with text instead of calling final_output.
The fix adds a check: if any_tool_executed && !final_output_called, we break
to let the outer loop's auto-continue logic prompt the LLM to continue.
Also fixed missing debug! import in g3-console/src/main.rs.