- Parse image blocks and include src URL in message text
- Handle code blocks with language info
- Handle header and cite/quote blocks
- Extract bold/italic/strike text from inline formatting
- Add buildMediaStory() to create proper Story blocks with images
- Add sendDmWithStory() and sendGroupMessageWithStory() variants
- Parse markdown images  into proper Tlon image blocks
- Add isImageUrl() helper for image extension detection
- Update sendMedia to use native image blocks instead of text fallback
The monitor already maintains an SSE connection for inbound messages.
Opening another EventSource for outbound pokes causes conflicts.
This uses a simple HTTP PUT to the channel endpoint instead.
Adds built-in Tlon (Urbit) channel plugin to support decentralized messaging on the Urbit network.
Features:
- DM and group chat support
- SSE-based real-time message monitoring
- Auto-discovery of group channels
- Thread replies and reactions
- Integration with Urbit's HTTP API
This resolves cron delivery issues with external Tlon plugins by making it a first-class built-in channel alongside Telegram, Signal, and other messaging platforms.
Implementation includes:
- Plugin registration via ClawdbotPluginApi
- Outbound delivery with sendText and sendMedia
- Gateway adapter for inbound message handling
- Urbit SSE client for event streaming
- Core bridge for Clawdbot runtime integration
Co-authored-by: William Arzt <william@arzt.co>