Some models (e.g., GLM 4.7 via OpenAI Compatible API) incorrectly pass
the content parameter as a JSON object instead of a string when calling
the write_to_file tool. This causes processing to break silently.
This fix adds defensive type coercion in NativeToolCallParser to:
1. Detect when content is not a string
2. Convert it to a formatted JSON string using JSON.stringify
3. Log a clear warning message so users understand what happened
This follows the existing pattern for type coercion (e.g.,
coerceOptionalBoolean for booleans).
Fixes#11040