mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-09 08:21:50 +00:00
Salvage of PR #27978 cherry-picked onto current main, resolving conflicts with main's intervening SimpleX plugin fixes (resp-envelope normalization, health-monitor reconnect-churn fix, bare-form DM addressing). What's new: - Group support via SIMPLEX_GROUP_ALLOWED (comma-separated IDs or '*'); inbound items surface chat_id=group:<id> + chat_type=group. Disabled by default so a bot in a group doesn't process every member's traffic. - Inbound files/voice via rcvFileDescrReady (immediate /freceive) deferred through _pending_file_transfers, replayed on rcvFileComplete. Voice notes -> MessageType.VOICE. - Native outbound media: send_image (PNG/JPEG + inline thumbnail), send_voice (msgContent.type=voice), send_video, send_document. All addressed by numeric ID via /_send ... json [...]. - MEDIA:<path> tags in agent replies stripped and dispatched as voice/document. - Text-burst batching (HERMES_SIMPLEX_TEXT_BATCH_DELAY, default 0.8s). - Auto-accept contact requests (SIMPLEX_AUTO_ACCEPT, default true). - Group send path uses structured /_send #<id> json form (the bracket #[<id>] form is parsed as display-name lookup and silently drops). plugin.yaml bumped to 1.1.0; docs updated. All inside plugins/platforms/simplex/ - no core edits. Co-authored-by: Juraj Bednar <juraj@bednar.io>
56 lines
2.4 KiB
YAML
56 lines
2.4 KiB
YAML
name: simplex-platform
|
|
label: SimpleX Chat
|
|
kind: platform
|
|
version: 1.1.0
|
|
description: >
|
|
SimpleX Chat gateway adapter for Hermes Agent.
|
|
Connects to a local simplex-chat daemon via WebSocket and relays
|
|
messages between SimpleX contacts/groups and the Hermes agent.
|
|
SimpleX is decentralised and assigns no persistent user IDs —
|
|
every contact is an opaque internal ID generated at connection
|
|
time, making it one of the most private messengers available.
|
|
author: Mibayy, jooray
|
|
# ``requires_env`` and ``optional_env`` entries are surfaced in the
|
|
# ``hermes config`` UI via the platform-plugin env var injector in
|
|
# ``hermes_cli/config.py``.
|
|
requires_env:
|
|
- name: SIMPLEX_WS_URL
|
|
description: "WebSocket URL of the simplex-chat daemon (e.g. ws://127.0.0.1:5225)"
|
|
prompt: "SimpleX daemon WebSocket URL"
|
|
password: false
|
|
optional_env:
|
|
- name: SIMPLEX_ALLOWED_USERS
|
|
description: "Comma-separated SimpleX contact IDs allowed to talk to the bot"
|
|
prompt: "Allowed contact IDs (comma-separated)"
|
|
password: false
|
|
- name: SIMPLEX_ALLOW_ALL_USERS
|
|
description: "Allow any contact to talk to the bot (dev only — disables allowlist)"
|
|
prompt: "Allow all contacts? (true/false)"
|
|
password: false
|
|
- name: SIMPLEX_AUTO_ACCEPT
|
|
description: "Auto-accept incoming contact requests (default: true)"
|
|
prompt: "Auto-accept contact requests? (true/false)"
|
|
password: false
|
|
- name: SIMPLEX_GROUP_ALLOWED
|
|
description: >-
|
|
Comma-separated SimpleX group IDs the bot should participate in, or
|
|
'*' to allow any group. Omit to ignore group messages entirely
|
|
(safer default — a bot in a group otherwise processes every
|
|
member's traffic).
|
|
prompt: "Allowed group IDs (comma-separated, or '*' for any)"
|
|
password: false
|
|
- name: SIMPLEX_HOME_CHANNEL
|
|
description: "Default contact/group ID for cron / notification delivery"
|
|
prompt: "Home channel contact/group ID (or empty)"
|
|
password: false
|
|
- name: SIMPLEX_HOME_CHANNEL_NAME
|
|
description: "Human label for the home channel (defaults to the ID)"
|
|
prompt: "Home channel display name (or empty)"
|
|
password: false
|
|
- name: HERMES_SIMPLEX_TEXT_BATCH_DELAY
|
|
description: >-
|
|
Quiet-period seconds (default: 0.8) used to concatenate rapid-fire
|
|
inbound text messages into a single MessageEvent — same pattern as
|
|
Telegram's text batching.
|
|
prompt: "Text batch flush delay in seconds (default 0.8)"
|
|
password: false
|