Problem
MessagePart enum lacks variants for native tool use/result flow.
Solution
Add to MessagePart:
- `ToolUse { id: String, name: String, input: serde_json::Value }`
- `ToolResult { tool_use_id: String, content: String, is_error: bool }`
Wire through flatten_parts() for LLM content generation and SQLite persistence.
Acceptance Criteria
Part of #253 (M20)