From 88cacbc89825c94b3979fb88824b1149178a5002 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Fri, 13 Sep 2024 12:43:37 +0200 Subject: [PATCH] Expose component constants for llm helper (#125891) * Expose climate INTENT_GET_TEMPERATURE * Expose conversation trace items * More fixes for llm helper --- homeassistant/components/climate/__init__.py | 1 + homeassistant/components/climate/const.py | 2 ++ homeassistant/components/climate/intent.py | 4 +--- homeassistant/components/conversation/__init__.py | 11 +++++++---- homeassistant/components/cover/__init__.py | 2 +- homeassistant/components/cover/const.py | 3 +++ homeassistant/components/cover/intent.py | 5 +---- homeassistant/components/homeassistant/__init__.py | 2 +- homeassistant/components/weather/__init__.py | 3 ++- homeassistant/components/weather/const.py | 2 ++ homeassistant/components/weather/intent.py | 4 +--- homeassistant/helpers/llm.py | 10 +++++----- 12 files changed, 27 insertions(+), 22 deletions(-) diff --git a/homeassistant/components/climate/__init__.py b/homeassistant/components/climate/__init__.py index e6c1781a59f..6cdb3339a7b 100644 --- a/homeassistant/components/climate/__init__.py +++ b/homeassistant/components/climate/__init__.py @@ -86,6 +86,7 @@ from .const import ( # noqa: F401 FAN_ON, FAN_TOP, HVAC_MODES, + INTENT_GET_TEMPERATURE, PRESET_ACTIVITY, PRESET_AWAY, PRESET_BOOST, diff --git a/homeassistant/components/climate/const.py b/homeassistant/components/climate/const.py index b74169430d4..a84a2f3c628 100644 --- a/homeassistant/components/climate/const.py +++ b/homeassistant/components/climate/const.py @@ -145,6 +145,8 @@ DEFAULT_MAX_HUMIDITY = 99 DOMAIN = "climate" +INTENT_GET_TEMPERATURE = "HassClimateGetTemperature" + SERVICE_SET_AUX_HEAT = "set_aux_heat" SERVICE_SET_FAN_MODE = "set_fan_mode" SERVICE_SET_PRESET_MODE = "set_preset_mode" diff --git a/homeassistant/components/climate/intent.py b/homeassistant/components/climate/intent.py index 53d0891fcda..9a8dfdda4ec 100644 --- a/homeassistant/components/climate/intent.py +++ b/homeassistant/components/climate/intent.py @@ -7,9 +7,7 @@ import voluptuous as vol from homeassistant.core import HomeAssistant from homeassistant.helpers import intent -from . import DOMAIN - -INTENT_GET_TEMPERATURE = "HassClimateGetTemperature" +from . import DOMAIN, INTENT_GET_TEMPERATURE async def async_setup_intents(hass: HomeAssistant) -> None: diff --git a/homeassistant/components/conversation/__init__.py b/homeassistant/components/conversation/__init__.py index a7b163d69bd..2e06387765b 100644 --- a/homeassistant/components/conversation/__init__.py +++ b/homeassistant/components/conversation/__init__.py @@ -46,20 +46,23 @@ from .default_agent import async_get_default_agent, async_setup_default_agent from .entity import ConversationEntity from .http import async_setup as async_setup_conversation_http from .models import AbstractConversationAgent, ConversationInput, ConversationResult +from .trace import ConversationTraceEventType, async_conversation_trace_append __all__ = [ "DOMAIN", "HOME_ASSISTANT_AGENT", "OLD_HOME_ASSISTANT_AGENT", + "ConversationEntity", + "ConversationEntityFeature", + "ConversationInput", + "ConversationResult", + "ConversationTraceEventType", + "async_conversation_trace_append", "async_converse", "async_get_agent_info", "async_set_agent", "async_setup", "async_unset_agent", - "ConversationEntity", - "ConversationInput", - "ConversationResult", - "ConversationEntityFeature", ] _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/cover/__init__.py b/homeassistant/components/cover/__init__.py index 90d2b644810..d2ec6bee8fa 100644 --- a/homeassistant/components/cover/__init__.py +++ b/homeassistant/components/cover/__init__.py @@ -42,7 +42,7 @@ from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.typing import ConfigType from homeassistant.loader import bind_hass -from .const import DOMAIN +from .const import DOMAIN, INTENT_CLOSE_COVER, INTENT_OPEN_COVER # noqa: F401 _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/cover/const.py b/homeassistant/components/cover/const.py index dd3e8b435c9..e9bbf81e5f5 100644 --- a/homeassistant/components/cover/const.py +++ b/homeassistant/components/cover/const.py @@ -1,3 +1,6 @@ """Constants for cover entity platform.""" DOMAIN = "cover" + +INTENT_OPEN_COVER = "HassOpenCover" +INTENT_CLOSE_COVER = "HassCloseCover" diff --git a/homeassistant/components/cover/intent.py b/homeassistant/components/cover/intent.py index 7580cff063a..dfc7d0f69a0 100644 --- a/homeassistant/components/cover/intent.py +++ b/homeassistant/components/cover/intent.py @@ -4,10 +4,7 @@ from homeassistant.const import SERVICE_CLOSE_COVER, SERVICE_OPEN_COVER from homeassistant.core import HomeAssistant from homeassistant.helpers import intent -from . import DOMAIN, CoverDeviceClass - -INTENT_OPEN_COVER = "HassOpenCover" -INTENT_CLOSE_COVER = "HassCloseCover" +from . import DOMAIN, INTENT_CLOSE_COVER, INTENT_OPEN_COVER, CoverDeviceClass async def async_setup_intents(hass: HomeAssistant) -> None: diff --git a/homeassistant/components/homeassistant/__init__.py b/homeassistant/components/homeassistant/__init__.py index f771923ab2d..6cec47152e5 100644 --- a/homeassistant/components/homeassistant/__init__.py +++ b/homeassistant/components/homeassistant/__init__.py @@ -54,7 +54,7 @@ from .const import ( SERVICE_HOMEASSISTANT_RESTART, SERVICE_HOMEASSISTANT_STOP, ) -from .exposed_entities import ExposedEntities +from .exposed_entities import ExposedEntities, async_should_expose # noqa: F401 ATTR_ENTRY_ID = "entry_id" ATTR_SAFE_MODE = "safe_mode" diff --git a/homeassistant/components/weather/__init__.py b/homeassistant/components/weather/__init__.py index dab3394426e..28f3e6b5c53 100644 --- a/homeassistant/components/weather/__init__.py +++ b/homeassistant/components/weather/__init__.py @@ -44,7 +44,7 @@ from homeassistant.util.dt import utcnow from homeassistant.util.json import JsonValueType from homeassistant.util.unit_system import US_CUSTOMARY_SYSTEM -from .const import ( +from .const import ( # noqa: F401 ATTR_WEATHER_APPARENT_TEMPERATURE, ATTR_WEATHER_CLOUD_COVERAGE, ATTR_WEATHER_DEW_POINT, @@ -63,6 +63,7 @@ from .const import ( ATTR_WEATHER_WIND_SPEED, ATTR_WEATHER_WIND_SPEED_UNIT, DOMAIN, + INTENT_GET_WEATHER, UNIT_CONVERSIONS, VALID_UNITS, WeatherEntityFeature, diff --git a/homeassistant/components/weather/const.py b/homeassistant/components/weather/const.py index 0b5246ab31c..251bbd622fc 100644 --- a/homeassistant/components/weather/const.py +++ b/homeassistant/components/weather/const.py @@ -49,6 +49,8 @@ ATTR_WEATHER_UV_INDEX = "uv_index" DOMAIN: Final = "weather" +INTENT_GET_WEATHER = "HassGetWeather" + VALID_UNITS_PRESSURE: set[str] = { UnitOfPressure.HPA, UnitOfPressure.MBAR, diff --git a/homeassistant/components/weather/intent.py b/homeassistant/components/weather/intent.py index e00a386b619..078108d7afe 100644 --- a/homeassistant/components/weather/intent.py +++ b/homeassistant/components/weather/intent.py @@ -7,9 +7,7 @@ import voluptuous as vol from homeassistant.core import HomeAssistant, State from homeassistant.helpers import intent -from . import DOMAIN - -INTENT_GET_WEATHER = "HassGetWeather" +from . import DOMAIN, INTENT_GET_WEATHER async def async_setup_intents(hass: HomeAssistant) -> None: diff --git a/homeassistant/helpers/llm.py b/homeassistant/helpers/llm.py index 0c173df81ff..b8d8d66615d 100644 --- a/homeassistant/helpers/llm.py +++ b/homeassistant/helpers/llm.py @@ -14,16 +14,16 @@ import slugify as unicode_slug import voluptuous as vol from voluptuous_openapi import UNSUPPORTED, convert -from homeassistant.components.climate.intent import INTENT_GET_TEMPERATURE -from homeassistant.components.conversation.trace import ( +from homeassistant.components.climate import INTENT_GET_TEMPERATURE +from homeassistant.components.conversation import ( ConversationTraceEventType, async_conversation_trace_append, ) -from homeassistant.components.cover.intent import INTENT_CLOSE_COVER, INTENT_OPEN_COVER -from homeassistant.components.homeassistant.exposed_entities import async_should_expose +from homeassistant.components.cover import INTENT_CLOSE_COVER, INTENT_OPEN_COVER +from homeassistant.components.homeassistant import async_should_expose from homeassistant.components.intent import async_device_supports_timers from homeassistant.components.script import ATTR_VARIABLES, DOMAIN as SCRIPT_DOMAIN -from homeassistant.components.weather.intent import INTENT_GET_WEATHER +from homeassistant.components.weather import INTENT_GET_WEATHER from homeassistant.const import ( ATTR_DOMAIN, ATTR_ENTITY_ID,