Moonshot/Kimi K2.5 API (OpenAI-compatible) rejects conversation history where assistant messages
Moonshot/Kimi K2.5 API (OpenAI-compatible) rejects conversation history where assistant messages lack the content field — even when tool_calls is present. The OpenAI SDK returns msg.content = None for tool-only responses, so conditionally setting content (e.g., if msg.content: assistant_msg["content"] = msg.content) silently drops the field. Fix: always set "content": msg.content or "". Applies to both API call construction and conversation store serialization. Rule: For any OpenAI-compatible API client, always emit "content": value_or_empty_string on assistant messages.