fix: Zulip attachment handling — event attachments + all file types #32

Merged
abiba-bot merged 1 commits from fix/zulip-attachment-handling into main 2026-07-05 16:06:32 +00:00
Owner

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)

Description

Closes #

Type

  • feat — new feature (MINOR version bump)
  • fix — bug fix (PATCH version bump)
  • docs — documentation only
  • refactor — code restructuring (no behavior change)

Platform(s) Affected

  • Hermes Python (Tanko, Mumuni, Koonimo, Koby)
  • pi TypeScript (Abiba)
  • Agent Zero (kagentz)
  • Shared infrastructure (config, deploy, docs)

Pre-Merge Checklist

  • Config schema validated against config.yaml.example
  • Plugin starts and connects to Zulip on affected CT(s)
  • Health endpoint returns 200
  • @mention detection works (bot receives own mentions)
  • Error handling: timeout produces graceful message
  • No API keys or secrets in code
  • ADRs referenced if decision changed

Testing

Screenshots / Logs

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) ## Description <!-- What does this PR do? Which issue does it close? --> Closes # ## Type - [ ] feat — new feature (MINOR version bump) - [ ] fix — bug fix (PATCH version bump) - [ ] docs — documentation only - [ ] refactor — code restructuring (no behavior change) ## Platform(s) Affected - [ ] Hermes Python (Tanko, Mumuni, Koonimo, Koby) - [ ] pi TypeScript (Abiba) - [ ] Agent Zero (kagentz) - [ ] Shared infrastructure (config, deploy, docs) ## Pre-Merge Checklist - [ ] Config schema validated against `config.yaml.example` - [ ] Plugin starts and connects to Zulip on affected CT(s) - [ ] Health endpoint returns 200 - [ ] @mention detection works (bot receives own mentions) - [ ] Error handling: timeout produces graceful message - [ ] No API keys or secrets in code - [ ] ADRs referenced if decision changed ## Testing <!-- How was this tested? Which CT(s)? --> ## Screenshots / Logs <!-- If applicable -->
jerome added 1 commit 2026-07-05 16:04:50 +00:00
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)
abiba-bot merged commit 20271f0eb3 into main 2026-07-05 16:06:32 +00:00
Sign in to join this conversation.