feat(webui): inject MCP tools into chat completions and execute tool calls
- Collect tools from connected MCP servers and pass them in the
chat completion request so the model knows about available tools
- When the model returns tool_calls, execute them via MCP servers,
store results as role:'tool' messages, and continue generation
- Fix SIGPIPE crash: ignore SIGPIPE in WebSocket server to prevent
server death when clients disconnect during writes
- Add try/catch in WebSocket connection handler to prevent unhandled
exceptions in detached threads from killing the process
- Update ChatMessages to also hide role:'tool' messages from display
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>