2026-04-30 05:03:38 +00:00
|
|
|
name: teams-platform
|
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.
2026-05-07 06:47:25 -07:00
|
|
|
label: Microsoft Teams
|
2026-04-30 05:03:38 +00:00
|
|
|
kind: platform
|
|
|
|
|
version: 1.0.0
|
|
|
|
|
description: >
|
|
|
|
|
Microsoft Teams gateway adapter for Hermes Agent.
|
|
|
|
|
Connects to Microsoft Teams via the Bot Framework and relays messages
|
|
|
|
|
between Teams chats (personal DMs, group chats, channel posts) and
|
|
|
|
|
the Hermes agent. Supports Adaptive Card approval prompts.
|
|
|
|
|
author: Aamir Jawaid
|
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.
2026-05-07 06:47:25 -07:00
|
|
|
# ``requires_env`` entries are surfaced in ``hermes config`` UI via the
|
|
|
|
|
# platform-plugin env var injector in ``hermes_cli/config.py``.
|
2026-04-30 05:03:38 +00:00
|
|
|
requires_env:
|
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.
2026-05-07 06:47:25 -07:00
|
|
|
- name: TEAMS_CLIENT_ID
|
|
|
|
|
description: "Azure AD application (Bot Framework) client ID"
|
|
|
|
|
prompt: "Teams / Azure AD client ID"
|
|
|
|
|
url: "https://portal.azure.com/"
|
|
|
|
|
password: false
|
|
|
|
|
- name: TEAMS_CLIENT_SECRET
|
|
|
|
|
description: "Azure AD application client secret"
|
|
|
|
|
prompt: "Teams / Azure AD client secret"
|
|
|
|
|
url: "https://portal.azure.com/"
|
|
|
|
|
password: true
|
|
|
|
|
- name: TEAMS_TENANT_ID
|
|
|
|
|
description: "Azure AD tenant ID hosting the bot application"
|
|
|
|
|
prompt: "Teams / Azure AD tenant ID"
|
|
|
|
|
password: false
|
|
|
|
|
optional_env:
|
|
|
|
|
- name: TEAMS_PORT
|
|
|
|
|
description: "Webhook listen port (Bot Framework default: 3978)"
|
|
|
|
|
prompt: "Webhook port"
|
|
|
|
|
password: false
|
|
|
|
|
- name: TEAMS_ALLOWED_USERS
|
|
|
|
|
description: "Comma-separated Teams user IDs / UPNs allowed to talk to the bot"
|
|
|
|
|
prompt: "Allowed users (comma-separated)"
|
|
|
|
|
password: false
|
|
|
|
|
- name: TEAMS_ALLOW_ALL_USERS
|
|
|
|
|
description: "Allow any Teams user to trigger the bot (dev only)"
|
|
|
|
|
prompt: "Allow all users? (true/false)"
|
|
|
|
|
password: false
|
|
|
|
|
- name: TEAMS_HOME_CHANNEL
|
|
|
|
|
description: "Default chat/channel ID for cron / notification delivery"
|
|
|
|
|
prompt: "Home channel (or empty)"
|
|
|
|
|
password: false
|
|
|
|
|
- name: TEAMS_HOME_CHANNEL_NAME
|
|
|
|
|
description: "Display name for the Teams home channel"
|
|
|
|
|
prompt: "Home channel display name"
|
|
|
|
|
password: false
|