Commit Graph

15 Commits

Author SHA1 Message Date
Hunter Miller
a41d83c8f2 Fix settings scry path to include app name: /settings/all.json 2026-01-29 21:05:53 -06:00
Hunter Miller
9138cb3303 Fix settings scry path to use /all.json 2026-01-29 20:59:00 -06:00
Hunter Miller
9cf27393bf Tlon plugin: handle channelRules as JSON string
Settings-store doesn't support nested objects as values, so channelRules
is stored as a JSON string and parsed on read.
2026-01-29 20:26:08 -06:00
Hunter Miller
5d30ee2232 Tlon plugin: add settings store integration for hot-reload config
- Add settings.ts module for settings-store subscription
- Monitor subscribes to moltbot/tlon settings bucket
- groupChannels, dmAllowlist, channelRules hot-reload without restart
- Settings store values override file config when present
- Graceful fallback if settings store not available
2026-01-29 20:13:08 -06:00
Hunter Miller
b44d129c56 Tlon plugin: firehose subscriptions + @all/nickname mentions
- Switch from per-channel subscriptions to firehose (/v2 channels, /v3 chat)
- Parse sect field for @all mentions
- Add @all as trigger for bot responses (like direct mention)
- Fetch bot nickname from contacts on startup (/contacts/v1/self.json)
- Subscribe to contacts updates (/v1/news) for live nickname changes
- Improve rich text parsing (inline-code, bold, italic, strike, blockquote)
2026-01-29 19:04:43 -06:00
Hunter Miller
9f67cceeb3 Merge branch 'fix/tlon-http-only-outbound' into tlon-plugin-rich-formatting 2026-01-27 13:46:36 -06:00
Hunter Miller
2dec3918e6 feat(tlon): extract block content from incoming messages
- 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
2026-01-27 12:27:57 -06:00
Hunter Miller
e8c1620895 feat(tlon): add rich media story support for images
- Add buildMediaStory() to create proper Story blocks with images
- Add sendDmWithStory() and sendGroupMessageWithStory() variants
- Parse markdown images ![alt](url) into proper Tlon image blocks
- Add isImageUrl() helper for image extension detection
- Update sendMedia to use native image blocks instead of text fallback
2026-01-27 10:33:02 -06:00
Hunter Miller
83defc61fb feat(tlon): add rich text formatting support
Convert markdown to Tlon's story format for rich messages:
- Bold, italics, strikethrough
- Inline code and code blocks with language
- Headers (h1-h6)
- Blockquotes
- Links and auto-linked URLs
- Ship mentions (~ship)
- Horizontal rules
- Line breaks

Disabled: hashtags (chat UI doesn't render them)
2026-01-27 10:33:02 -06:00
Peter Steinberger
6d16a658e5 refactor: rename clawdbot to moltbot with legacy compat 2026-01-27 12:21:02 +00:00
Shadow
5172098073
Tlon: format reply IDs as @ud (#1837) 2026-01-25 22:30:18 -06:00
Hunter Miller
ddc29261c2 fix(tlon): use HTTP-only poke for outbound to avoid SSE conflict
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.
2026-01-25 09:23:20 -06:00
Hunter Miller
8a2720db4c
fix(tlon): Fix Zod v4 record() and @urbit/aura v3 API changes (#1631)
* fix(tlon): Fix Zod v4 record() and @urbit/aura v3 API changes

- Fix Zod v4.3.6 bug: single-arg z.record() fails with toJSONSchema()
  - Use two-arg form: z.record(z.string(), schema)
  - Fixes 'Cannot read properties of undefined (reading _zod)' error

- Fix @urbit/aura v3.0.0 API migration:
  - unixToDa() → da.fromUnix()
  - formatUd() → scot('ud', ...)
  - Fixes '(0 , _aura.unixToDa) is not a function' error

These were blocking Tlon plugin loading and outbound messaging.

* fix: add tlon schema/aura tests (#1631) (thanks @arthyn)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-24 21:09:18 +00:00
Peter Steinberger
791b568f78 feat: add tlon channel plugin 2026-01-24 00:25:39 +00:00
william arzt
d46642319b Add Tlon/Urbit channel plugin
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>
2026-01-24 00:25:38 +00:00