|
@@ -32,9 +32,10 @@ Capabilities natively implemented by the Chatto plugin adapter:
|
|
|
| text | yes |
|
|
| text | yes |
|
|
|
| markdown | yes |
|
|
| markdown | yes |
|
|
|
| threads | yes |
|
|
| threads | yes |
|
|
|
-| reactions | yes |
|
|
|
|
|
|
|
+| reactions | yes (lifecycle 👀/✅/❌/🚫 outbound; inbound reactions forwarded to Hermes user hooks as `reaction:added` / `reaction:removed`) |
|
|
|
| message editing | yes |
|
|
| message editing | yes |
|
|
|
| inbound edit processing | yes (correction / late-mention / ignored, see behavior table) |
|
|
| inbound edit processing | yes (correction / late-mention / ignored, see behavior table) |
|
|
|
|
|
+| inbound media | yes (attachments downloaded into the media cache, delivered as image/document/etc.) |
|
|
|
| message deletion | yes |
|
|
| message deletion | yes |
|
|
|
| typing indicators | yes |
|
|
| typing indicators | yes |
|
|
|
| processing notifications | yes (👀/✅/❌/🚫) |
|
|
| processing notifications | yes (👀/✅/❌/🚫) |
|
|
@@ -223,6 +224,8 @@ Hermes uses emoji reactions for processing lifecycle notifications:
|
|
|
|
|
|
|
|
Disable the lifecycle reactions with `CHATTO_REACTIONS=false`.
|
|
Disable the lifecycle reactions with `CHATTO_REACTIONS=false`.
|
|
|
|
|
|
|
|
|
|
+Inbound reactions from other users are forwarded to user hooks as `reaction:added` / `reaction:removed` events, carrying the reactor's user ID, the room ID and the message ID. The bot's own lifecycle reactions (👀/✅/❌/🚫) are not forwarded — they would feed the agent its own markers. `CHATTO_REACTIONS=false` disables only the outbound lifecycle reactions; inbound forwarding is unaffected.
|
|
|
|
|
+
|
|
|
### Message Editing and Deletion
|
|
### Message Editing and Deletion
|
|
|
|
|
|
|
|
The adapter supports editing existing messages (via chattolib's `update_message`) and deleting them (via `delete_message`). Streaming replies are delivered as incremental edits to a single message.
|
|
The adapter supports editing existing messages (via chattolib's `update_message`) and deleting them (via `delete_message`). Streaming replies are delivered as incremental edits to a single message.
|
|
@@ -247,6 +250,10 @@ File attachments are uploaded via chattolib's chunked upload API:
|
|
|
|
|
|
|
|
Images, videos, audio and documents are posted as native Chatto attachments; several images can be bundled into a single message.
|
|
Images, videos, audio and documents are posted as native Chatto attachments; several images can be bundled into a single message.
|
|
|
|
|
|
|
|
|
|
+### Inbound Media
|
|
|
|
|
+
|
|
|
|
|
+Attachments sent *to* the bot are downloaded into the gateway's media cache (bounded against the download cap) and handed to the agent as image, document, video or audio — an image arrives as a viewable media URL and media type, not as a bare link. A message that is only an attachment (an image or PDF with an empty body) is still delivered rather than dropped. A download that fails is logged and skipped, so the surrounding text — and the turn — still reaches the agent.
|
|
|
|
|
+
|
|
|
### Auto-Reconnect
|
|
### Auto-Reconnect
|
|
|
|
|
|
|
|
If the realtime stream drops, the adapter reconnects automatically with exponential backoff (1 s → 30 s max, jittered) and honours server-provided retry hints. Events the Chatto server redelivers after a reconnect are recognised by an in-memory event-ID list and processed only once.
|
|
If the realtime stream drops, the adapter reconnects automatically with exponential backoff (1 s → 30 s max, jittered) and honours server-provided retry hints. Events the Chatto server redelivers after a reconnect are recognised by an in-memory event-ID list and processed only once.
|