- Parse inbound `input` array with `input_text`, `input_image`,
`input_file` content parts (base64 encoded, per Weibo Open IM protocol)
- Implement `core.ImageSender` (SendImage) and `core.FileSender`
(SendFile) by encoding media as base64 in the `send_message` payload
- Add `normalizeInboundInput` to extract text/images/files from the
multi-modal input structure; input_text parts override payload.text
- Support image-only or file-only messages (no text required)
- Filter unsupported image MIME types; enforce size limits (10MB img, 5MB file)
- Extract `writeWS` helper to unify WebSocket write logic
- Add comprehensive tests: inbound image/file parsing, outbound image/file
send, MIME filtering, role filtering, interface compliance checks
Made-with: Cursor