The email tool's composeEmail service now always receives HTML body.
Workflow actions render their TipTap JSONContent to HTML at the boundary
via a new renderRichTextToHtml utility, instead of relying on magic
JSON.parse detection inside the shared service.
- Delete parseEmailBody (format-guessing utility)
- Simplify email-composer.service to sanitize + plain-text only
- Move JSONContent rendering to workflow action boundary
- Update tool schema to describe body as HTML format
Made-with: Cursor