Files
zulip-platform-plugins/hermes-zulip-plugin/plugin.yaml
T
Abiba f205230e84 fix: Zulip attachment handling — event attachments + all file types
hermes-zulip-plugin (Tanko/Mumuni):
  - Add _extract_event_attachments() to handle message.attachments from
    Zulip UI file uploads (previously only inline markdown links worked)
  - Add shared _cache_attachment() method for images/audio/documents
  - Refactor _extract_inline_media() to use _cache_attachment()
  - Fix connect() signature for hermes-agent 0.18.0 compat (add is_reconnect)

pi-zulip-extension (Abiba):
  - Extend attachment handling beyond images only: text files (decoded
    inline), PDFs (pdftotext extraction), binary files (metadata)
  - 50K char cap on text/PDF extraction to prevent context flooding
  - Classify attachments by extension (image/text/pdf/binary)

pi-mcp-extension (Abiba):
  - Detect bridge-side text truncation (… ellipsis marker)
  - Rebuild relay message display from structuredContent when truncated
  - Add rebuildRelayTextFromStructuredContent() helper

Config:
  - Add ZULIP_ROLE=router to ecosystem.abiba.config.cjs (was missing)
2026-07-05 16:03:32 +00:00

62 lines
2.4 KiB
YAML

name: zulip-platform
label: Zulip
kind: platform
manifest_version: 1
version: 1.0.0
description: >
Zulip gateway adapter for Hermes Agent. Connects to a self-hosted or cloud
Zulip realm via the REST API — an event queue (register + long-poll) for
receiving and POST /messages for sending — relaying messages between Zulip
channels (streams)/topics and direct messages and the Hermes agent.
Supports topic-aware replies, native file uploads, channel-scoped
allowlists, @mention gating via message flags, and home-channel cron
delivery. No Zulip SDK required — uses aiohttp.
author: wachtelhund
requires_env:
- name: ZULIP_SITE
description: "Zulip realm URL (e.g. https://example.zulipchat.com)"
prompt: "Zulip site URL"
password: false
url: "https://zulip.com/api/api-keys"
- name: ZULIP_EMAIL
description: "Bot email address"
prompt: "Bot email"
password: false
- name: ZULIP_API_KEY
description: "Bot API key"
prompt: "Zulip bot API key"
password: true
optional_env:
- name: ZULIP_ALLOWED_USERS
description: "Comma-separated sender emails/ids allowed to talk to the bot"
prompt: "Allowed users (comma-separated)"
password: false
- name: ZULIP_ALLOW_ALL_USERS
description: "Allow any Zulip user to trigger the bot (dev only)"
prompt: "Allow all users? (true/false)"
password: false
- name: ZULIP_HOME_CHANNEL
description: "Default target for cron / notification delivery (e.g. general/hermes)"
prompt: "Home channel (stream/topic)"
password: false
- name: ZULIP_REQUIRE_MENTION
description: "Require @bot mention in channels (default true). Set false for free-response everywhere."
prompt: "Require @mention? (true/false)"
password: false
- name: ZULIP_FREE_RESPONSE_CHANNELS
description: "Comma-separated stream ids/names where @mention is not required."
prompt: "Free-response streams (comma-separated)"
password: false
- name: ZULIP_ALLOWED_CHANNELS
description: "If set, the bot only responds in these stream ids/names (whitelist)."
prompt: "Allowed streams (comma-separated)"
password: false
- name: ZULIP_ALL_PUBLIC_STREAMS
description: "Subscribe the event queue to all public streams (default false)."
prompt: "Listen to all public streams? (true/false)"
password: false
- name: ZULIP_DEFAULT_TOPIC
description: "Topic used when a target has none (default 'general')."
prompt: "Default topic"
password: false