Rewrite hermes-zulip-plugin as a proper Hermes platform plugin with auto-discovery via plugin.yaml + __init__.py + register() pattern. Features: - Zulip event queue registration and polling for real-time messages - DM-first architecture — private messages route into agent's session - Placeholder→edit streaming UX (Thinking... → final response) - Typing indicators via Zulip API - Exponential backoff reconnection and queue re-registration - Message deduplication with sliding window - Config via config.yaml or env vars (ZULIP_EMAIL, ZULIP_API_KEY, ZULIP_SITE) - Standalone sender for cron/notification delivery - Plugin auto-discovery via @hermes_agent.plugins entry point Architecture follows the proven ntfy adapter pattern: plugins/platforms/{name}/plugin.yaml plugins/platforms/{name}/__init__.py → exports register() plugins/platforms/{name}/adapter.py → ZulipAdapter(BasePlatformAdapter) Deployment: copy to ~/.hermes/plugins/platforms/zulip/ and restart gateway Requirements: pip install zulip httpx Closes issue #24
- Replace all 'openclaw' references with 'pi' (pi coding harness) - Fix Git remote URL in CONTEXT.md - Harmonize health port to 9200 across all docs - Add config.yaml.example with full schema - Add pi-zulip-extension skeleton (TypeScript, pi Extension API) - Add hermes-zulip-plugin skeleton (Python, BasePlatformAdapter) - Add agent-zero-plugin skeleton (Python, A0 plugin API) - Update ADR-007 with pi extension docs reference - Document private topic ACL v1 limitation in CONTEXT.md