A full-screen TUI CLI agent powered by local LLMs via Docker Model Runner

:bug: fix(tui): attach tool_calls to assistant turn in agent loop master

The loop pushed an empty assistant message with no tool_calls before each tool result, so the model never saw its own request and re-issued the same call until MAX_TOOL_ITERATIONS, surfacing "[Max tool iterations reached]" when starting a proposal. Record the assistant turn with its tool_calls, answer every call (including unknown tools) via tool_call_id, and share a ChatMessage type across the loop and DMR client.


+80 -58
3 changed files