diff --git a/gateway/run.py b/gateway/run.py index 827ec01b..60fbd490 100644 --- a/gateway/run.py +++ b/gateway/run.py @@ -6384,18 +6384,10 @@ class GatewayRunner: env_key = f"{platform_name.upper()}_HOME_CHANNEL" - # Save to config.yaml + # Save to .env so it persists across restarts try: - import yaml - config_path = _hermes_home / 'config.yaml' - user_config = {} - if config_path.exists(): - with open(config_path, encoding="utf-8") as f: - user_config = yaml.safe_load(f) or {} - user_config[env_key] = chat_id - atomic_yaml_write(config_path, user_config) - # Also set in the current environment so it takes effect immediately - os.environ[env_key] = str(chat_id) + from hermes_cli.config import save_env_value + save_env_value(env_key, str(chat_id)) except Exception as e: return f"Failed to save home channel: {e}" diff --git a/hermes_cli/config.py b/hermes_cli/config.py index d3b00fe9..13337316 100644 --- a/hermes_cli/config.py +++ b/hermes_cli/config.py @@ -35,26 +35,35 @@ _LAST_EXPANDED_CONFIG_BY_PATH: Dict[str, Any] = {} _EXTRA_ENV_KEYS = frozenset({ "OPENAI_API_KEY", "OPENAI_BASE_URL", "ANTHROPIC_API_KEY", "ANTHROPIC_TOKEN", - "DISCORD_HOME_CHANNEL", "TELEGRAM_HOME_CHANNEL", + "DISCORD_HOME_CHANNEL", "DISCORD_HOME_CHANNEL_NAME", + "TELEGRAM_HOME_CHANNEL", "TELEGRAM_HOME_CHANNEL_NAME", + "SLACK_HOME_CHANNEL", "SLACK_HOME_CHANNEL_NAME", "SIGNAL_ACCOUNT", "SIGNAL_HTTP_URL", "SIGNAL_ALLOWED_USERS", "SIGNAL_GROUP_ALLOWED_USERS", + "SIGNAL_HOME_CHANNEL", "SIGNAL_HOME_CHANNEL_NAME", + "SMS_HOME_CHANNEL", "SMS_HOME_CHANNEL_NAME", "DINGTALK_CLIENT_ID", "DINGTALK_CLIENT_SECRET", + "DINGTALK_HOME_CHANNEL", "DINGTALK_HOME_CHANNEL_NAME", "FEISHU_APP_ID", "FEISHU_APP_SECRET", "FEISHU_ENCRYPT_KEY", "FEISHU_VERIFICATION_TOKEN", + "FEISHU_HOME_CHANNEL", "FEISHU_HOME_CHANNEL_NAME", + "YUANBAO_HOME_CHANNEL", "YUANBAO_HOME_CHANNEL_NAME", "WECOM_BOT_ID", "WECOM_SECRET", "WECOM_CALLBACK_CORP_ID", "WECOM_CALLBACK_CORP_SECRET", "WECOM_CALLBACK_AGENT_ID", "WECOM_CALLBACK_TOKEN", "WECOM_CALLBACK_ENCODING_AES_KEY", "WECOM_CALLBACK_HOST", "WECOM_CALLBACK_PORT", + "WECOM_HOME_CHANNEL", "WECOM_HOME_CHANNEL_NAME", "WEIXIN_ACCOUNT_ID", "WEIXIN_TOKEN", "WEIXIN_BASE_URL", "WEIXIN_CDN_BASE_URL", "WEIXIN_HOME_CHANNEL", "WEIXIN_HOME_CHANNEL_NAME", "WEIXIN_DM_POLICY", "WEIXIN_GROUP_POLICY", "WEIXIN_ALLOWED_USERS", "WEIXIN_GROUP_ALLOWED_USERS", "WEIXIN_ALLOW_ALL_USERS", "BLUEBUBBLES_SERVER_URL", "BLUEBUBBLES_PASSWORD", + "BLUEBUBBLES_HOME_CHANNEL", "BLUEBUBBLES_HOME_CHANNEL_NAME", "QQ_APP_ID", "QQ_CLIENT_SECRET", "QQBOT_HOME_CHANNEL", "QQBOT_HOME_CHANNEL_NAME", "QQ_HOME_CHANNEL", "QQ_HOME_CHANNEL_NAME", # legacy aliases (pre-rename, still read for back-compat) "QQ_ALLOWED_USERS", "QQ_GROUP_ALLOWED_USERS", "QQ_ALLOW_ALL_USERS", "QQ_MARKDOWN_SUPPORT", "QQ_STT_API_KEY", "QQ_STT_BASE_URL", "QQ_STT_MODEL", "TERMINAL_ENV", "TERMINAL_SSH_KEY", "TERMINAL_SSH_PORT", "WHATSAPP_MODE", "WHATSAPP_ENABLED", - "MATTERMOST_HOME_CHANNEL", "MATTERMOST_REPLY_MODE", + "MATTERMOST_HOME_CHANNEL", "MATTERMOST_HOME_CHANNEL_NAME", "MATTERMOST_REPLY_MODE", "MATRIX_PASSWORD", "MATRIX_ENCRYPTION", "MATRIX_DEVICE_ID", "MATRIX_HOME_ROOM", "MATRIX_REQUIRE_MENTION", "MATRIX_FREE_RESPONSE_ROOMS", "MATRIX_AUTO_THREAD", "MATRIX_DM_AUTO_THREAD", "MATRIX_RECOVERY_KEY",