mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-11 03:31:55 +00:00
refactor(plugins/platforms): migrate IRC + Teams to new env_enablement + cron_deliver hooks
Adopt the generic platform-plugin hooks landed in the preceding commit so IRC and Teams get env-only config detection and cron home-channel delivery without living in cron/scheduler.py's hardcoded sets. IRC (plugins/platforms/irc/): - adapter.py: new _env_enablement() seeds server, channel, port, nickname, use_tls, server_password, nickserv_password, and a home_channel dict into PlatformConfig on env-only setups. IRC_HOME_CHANNEL defaults to IRC_CHANNEL so deliver=irc cron jobs route to the joined channel by default. - adapter.py: register_platform() gains env_enablement_fn=_env_enablement and cron_deliver_env_var='IRC_HOME_CHANNEL'. - plugin.yaml: rich requires_env / optional_env with description, prompt, password, url for every IRC env var. Hardcoded IRC entries in hermes_cli/config.py still win (back-compat), but the plugin now carries its own metadata. Teams (plugins/platforms/teams/): - adapter.py: new _env_enablement() seeds client_id, client_secret, tenant_id, port, and home_channel into PlatformConfig. Closes the long-standing gap where TEAMS_HOME_CHANNEL was documented but never wired up. - adapter.py: register_platform() gains env_enablement_fn=_env_enablement and cron_deliver_env_var='TEAMS_HOME_CHANNEL' — deliver=teams cron jobs now work. - plugin.yaml: rich requires_env / optional_env with description, prompt, password, url for every Teams env var. Surfaces them in 'hermes config' UI for the first time (Teams had no OPTIONAL_ENV_VARS entries before this). Zero behavior change for existing users: env_enablement_fn is only called when env vars are set, and the registry's config-first-env-fallback path in validate_config / is_connected is unchanged.
This commit is contained in:
parent
44cd79e798
commit
be87a96296
4 changed files with 185 additions and 6 deletions
|
|
@ -1,4 +1,5 @@
|
|||
name: irc-platform
|
||||
label: IRC
|
||||
kind: platform
|
||||
version: 1.0.0
|
||||
description: >
|
||||
|
|
@ -7,7 +8,47 @@ description: >
|
|||
(or DMs) and the Hermes agent. No external dependencies — uses
|
||||
Python's stdlib asyncio for the IRC protocol.
|
||||
author: Nous Research
|
||||
# ``requires_env`` entries are surfaced in ``hermes config`` UI via the
|
||||
# platform-plugin env var injector in ``hermes_cli/config.py``.
|
||||
requires_env:
|
||||
- IRC_SERVER
|
||||
- IRC_CHANNEL
|
||||
- IRC_NICKNAME
|
||||
- name: IRC_SERVER
|
||||
description: "IRC server hostname (e.g. irc.libera.chat)"
|
||||
prompt: "IRC server"
|
||||
password: false
|
||||
- name: IRC_CHANNEL
|
||||
description: "Channel to join (e.g. #hermes — comma-separate for multiple)"
|
||||
prompt: "IRC channel"
|
||||
password: false
|
||||
- name: IRC_NICKNAME
|
||||
description: "Bot nickname on IRC (default: hermes-bot)"
|
||||
prompt: "Bot nickname"
|
||||
password: false
|
||||
optional_env:
|
||||
- name: IRC_PORT
|
||||
description: "IRC server port (default: 6697 with TLS, 6667 without)"
|
||||
prompt: "IRC port"
|
||||
password: false
|
||||
- name: IRC_USE_TLS
|
||||
description: "Use TLS for the IRC connection (1/true/yes to enable, default: true on port 6697)"
|
||||
prompt: "Use TLS? (true/false)"
|
||||
password: false
|
||||
- name: IRC_SERVER_PASSWORD
|
||||
description: "Server password for the IRC PASS command (optional)"
|
||||
prompt: "Server password (optional)"
|
||||
password: true
|
||||
- name: IRC_NICKSERV_PASSWORD
|
||||
description: "NickServ password for automatic IDENTIFY on connect (optional)"
|
||||
prompt: "NickServ password (optional)"
|
||||
password: true
|
||||
- name: IRC_ALLOWED_USERS
|
||||
description: "Comma-separated IRC nicks allowed to talk to the bot"
|
||||
prompt: "Allowed nicks (comma-separated)"
|
||||
password: false
|
||||
- name: IRC_ALLOW_ALL_USERS
|
||||
description: "Allow anyone in the channel to talk to the bot (dev only)"
|
||||
prompt: "Allow all users? (true/false)"
|
||||
password: false
|
||||
- name: IRC_HOME_CHANNEL
|
||||
description: "Channel for cron / notification delivery (defaults to IRC_CHANNEL)"
|
||||
prompt: "Home channel (or empty)"
|
||||
password: false
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue