isDeepSeekReasoningProvider previously only detected DeepSeek via
providerName == 'deepseek' or apiBase host == 'deepseek.com'. Users
proxying DeepSeek models through third-party endpoints (e.g. opencode.ai)
would not be detected, causing prepareMessagesForRequest to route into
stripReasoningMessages, which unconditionally blanks all reasoning_content
— including for tool-interaction turns where DeepSeek requires it.
Fix: add model-based detection via isDeepSeekModel() which checks if the
model name contains 'deepseek'. Also add prepareMessagesForRequest and
isDeepSeekReasoningProvider to accept the model parameter.