Tool-call logging and chat replay reliability release.
This release includes:
- Persist streamed tool calls into copilot_tool_calls when audit tool-call logging is enabled.
- Track tool-call lifecycle as pending to executed or failed.
- Dispatch CopilotToolExecuted with the persisted tool-call model payload.
- Fix BaseTool dispatch persistence behavior and valid field/status mapping.
- Rehydrate saved tool calls when reopening conversations so tool calls appear in chat history in timeline order.
- Improve frontend tool-result matching by tool id first, preventing mismatches when the same tool runs multiple times.
- Add regression coverage for tool-call persistence and chat rehydration.
Also includes merged work from @Apollo139 (PR #9, closes #10):
- StreamController duplicate-user-message fix.
- Extract and remove the trailing user row from conversation history before withMessages, then pass it as prompt to stream.
- Prevent duplicate consecutive user messages in provider payloads and reduce avoidable prompt token inflation.
Fixes #11.