hermes / hermes_cli /platforms.py
haochengsama's picture
Add files using upload-large-folder tool
8ecc70d verified
Raw
History Blame Contribute Delete
2.84 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")),
("qqbot", PlatformInfo(label="πŸ’¬ QQBot", default_toolset="hermes-qqbot")),
("webhook", PlatformInfo(label="πŸ”— Webhook", default_toolset="hermes-webhook")),
("api_server", PlatformInfo(label="🌐 API Server", default_toolset="hermes-api-server")),
("cron", PlatformInfo(label="⏰ Cron", default_toolset="hermes-cron")),
])
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