hermes-agent / hermes_cli /platforms.py
atvor's picture
Upload 1579 files
fca69f9 verified
Raw
History Blame Contribute Delete
2.64 kB
"""
Shared platform registry for Hermes Agent.
Single source of truth for platform metadata consumed by both
skills_config (label display) and tools_config (default toolset
resolution). Import ``PLATFORMS`` from here instead of maintaining
duplicate dicts in each module.
"""
from collections import OrderedDict
from typing import NamedTuple
class PlatformInfo(NamedTuple):
"""Metadata for a single platform entry."""
label: str
default_toolset: str
# Ordered so that TUI menus are deterministic.
PLATFORMS: OrderedDict[str, PlatformInfo] = OrderedDict([
("cli", PlatformInfo(label="πŸ–₯️ CLI", default_toolset="hermes-cli")),
("telegram", PlatformInfo(label="πŸ“± Telegram", default_toolset="hermes-telegram")),
("discord", PlatformInfo(label="πŸ’¬ Discord", default_toolset="hermes-discord")),
("slack", PlatformInfo(label="πŸ’Ό Slack", default_toolset="hermes-slack")),
("whatsapp", PlatformInfo(label="πŸ“± WhatsApp", default_toolset="hermes-whatsapp")),
("signal", PlatformInfo(label="πŸ“‘ Signal", default_toolset="hermes-signal")),
("bluebubbles", PlatformInfo(label="πŸ’™ BlueBubbles", default_toolset="hermes-bluebubbles")),
("email", PlatformInfo(label="πŸ“§ Email", default_toolset="hermes-email")),
("homeassistant", PlatformInfo(label="🏠 Home Assistant", default_toolset="hermes-homeassistant")),
("mattermost", PlatformInfo(label="πŸ’¬ Mattermost", default_toolset="hermes-mattermost")),
("matrix", PlatformInfo(label="πŸ’¬ Matrix", default_toolset="hermes-matrix")),
("dingtalk", PlatformInfo(label="πŸ’¬ DingTalk", default_toolset="hermes-dingtalk")),
("feishu", PlatformInfo(label="πŸͺ½ Feishu", default_toolset="hermes-feishu")),
("wecom", PlatformInfo(label="πŸ’¬ WeCom", default_toolset="hermes-wecom")),
("wecom_callback", PlatformInfo(label="πŸ’¬ WeCom Callback", default_toolset="hermes-wecom-callback")),
("weixin", PlatformInfo(label="πŸ’¬ Weixin", default_toolset="hermes-weixin")),
("webhook", PlatformInfo(label="πŸ”— Webhook", default_toolset="hermes-webhook")),
("api_server", PlatformInfo(label="🌐 API Server", default_toolset="hermes-api-server")),
])
def platform_label(key: str, default: str = "") -> str:
"""Return the display label for a platform key, or *default*."""
info = PLATFORMS.get(key)
return info.label if info is not None else default