feat(ui): add Chat UI — ChatGPT-like interface with MCP tools and streaming (#22937)
* feat(ui): add chat message and conversation types
* feat(ui): add useChatHistory hook for localStorage-backed conversations
* feat(ui): add ConversationList sidebar component
* feat(ui): add MCPConnectPicker for attaching MCP servers to chat
* feat(ui): add ModelSelector dropdown for chat
* feat(ui): add ChatInputBar with MCP tool attachment support
* feat(ui): add MCPAppsPanel with list/detail view for MCP servers
* feat(ui): add ChatMessages component; remove auto-scrollIntoView that caused scroll-lock bypass
* feat(ui): add ChatPage — ChatGPT-like UI with scroll lock, MCP tools, streaming
* feat(ui): add /chat route wired to ChatPage
* feat(ui): remove chat from leftnav — chat accessible via navbar button
* feat(ui): add Chat button to top navbar
* feat(ui): add dismissible Chat UI announcement banner to Playground page
* feat(proxy): add Chat UI link to Swagger description
* feat(ui): add react-markdown and syntax-highlighter deps for chat UI
* fix(ui): replace missing BorderOutlined import with inline stop icon div
* fix(ui): apply remark-gfm plugin to ReactMarkdown for GFM support
* fix(ui): remove unused isEvenRow variable in MCPAppsPanel
* fix(ui): add ellipsis when truncating conversation title
* fix(ui): wire search button to chats view; remove non-functional keyboard hint
* fix(ui): use serverRootPath in navbar chat link for sub-path deployments
* fix(ui): remove unused ChatInputBar and ModelSelector files
* fix(ui): correct grid bottom-border condition for odd server count
* fix(chat): move localStorage writes out of setConversations updater (React purity)
* fix(chat): fix stale closure in handleEditAndResend - compute history before async state update
* fix(chat): fix 4 issues in ChatMessages - array redaction, clipboard error, inline detection, remove unused ref