hermes-bsd/plugins/platforms/homeassistant/plugin.yaml

23 lines
820 B
YAML
Raw Normal View History

refactor(gateway): migrate Home Assistant adapter to bundled plugin 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.
2026-05-26 14:06:33 +05:30
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