mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-09 08:21:50 +00:00
Move gateway/platforms/homeassistant.py into plugins/platforms/homeassistant/
following the same shape as the Mattermost and Discord migrations.
- Adapter file is renamed via git mv (history is preserved).
- register() exposes the platform via the plugin system instead of the
hardcoded Platform.HOMEASSISTANT elif in gateway/run.py::build_adapter().
- _standalone_send() replaces the legacy _send_homeassistant() helper in
tools/send_message_tool.py. Out-of-process cron delivery
(deliver=homeassistant from a cron process not co-located with the
gateway) now flows through the registry's standalone_sender_fn path
instead of the hardcoded elif.
- _is_connected() probes HASS_TOKEN via hermes_cli.gateway.get_env_value
so existing connected-platform checks behave identically.
The HASS_TOKEN / HASS_URL env-to-PlatformConfig seeding in
gateway/config.py stays in core — same pattern bluebubbles, mattermost,
and discord migrations followed. No setup_fn or apply_yaml_config_fn is
registered because Home Assistant has no _setup_homeassistant wizard in
hermes_cli/setup.py and no homeassistant: YAML block in config.yaml today;
setup runs through the existing hermes_cli/tools_config.py toolset wizard.
Test imports were rewritten across tests/gateway/test_homeassistant.py,
tests/integration/test_ha_integration.py, and
tests/tools/test_send_message_missing_platforms.py; the legacy
(token, extra, chat_id, message)-shaped _send_homeassistant call site is
preserved via a small SimpleNamespace shim in
test_send_message_missing_platforms.py (same approach used when
mattermost moved).
- Focused HA suites (64 tests across the three rewritten files) pass.
- Broader gateway/cron sweep produces 10 failures identical to main
baseline (telegram approval/model-picker xdist isolation flakes,
wecom_callback defusedxml issue, cron script_timeout fixture issue).
Zero net new failures.
22 lines
820 B
YAML
22 lines
820 B
YAML
name: homeassistant-platform
|
|
label: Home Assistant
|
|
kind: platform
|
|
version: 1.0.0
|
|
description: >
|
|
Home Assistant gateway adapter for Hermes Agent.
|
|
Subscribes to HA's WebSocket event bus and forwards state-change events
|
|
(with per-entity cooldowns and domain/entity filtering) to the agent.
|
|
Outbound messages are delivered as HA persistent notifications via the
|
|
REST API. Out-of-process cron delivery via the ``notify.notify``
|
|
service is also supported.
|
|
author: NousResearch
|
|
requires_env:
|
|
- name: HASS_TOKEN
|
|
description: "Home Assistant Long-Lived Access Token"
|
|
prompt: "Home Assistant Long-Lived Access Token"
|
|
password: true
|
|
optional_env:
|
|
- name: HASS_URL
|
|
description: "Home Assistant base URL (default: http://homeassistant.local:8123)"
|
|
prompt: "Home Assistant URL"
|
|
password: false
|