* area conversions
* start work on tests
* add number device class
* update unit conversions to utilise distance constants
* add area unit
* update test unit system
* update device condition and trigger
* update statistic unit converters
* further tests work WIP
* update test unit system
* add missing string translations
* fix websocket tests
* add deprecated notice
* add more missing strings and missing initialisation of unit system
* adjust icon and remove strings from scrape and random
* Fix acre to meters conversion
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
* Tidy up valid units
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
* fix ordering of area
* update order alphabetically
* fix broken test
* update test_init
* Update homeassistant/const.py
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
* remove deprecated unit and fix alphabetical order
* change deprecation and add tests, change to millimeter conversion for inches
* fix order
* re-order defs alphabetically
* add measurement as well
* update icons
* fix up Deprecation of area square meters
* Update core integrations to UnitOfArea
* update test recorder tests
* unit system tests in alphabetical
* update snapshot
* rebuild
* revert alphabetization of functions
* other revert of alphabetical order
---------
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
* Add new frame helper to clarify options available
* Adjust
* Improve
* Use report_usage in core
* Add tests
* Use is/is not
Co-authored-by: J. Nick Koston <nick@koston.org>
* Use enum.auto()
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add support for the wait.completed variable when using wait with triggers
* Remove junk comment
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Add ability to pass the config entry explicitely in data update coordinators
* Implement in accuweather
* Raise if config entry not set
* Move accuweather models
* Fix gogogate2
* Fix rainforest_raven
* fix
* Fix
* Fix
* Update homeassistant/helpers/config_validation.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Fix
* Fix
* Fix
* Fix
* Add more tests
* Fix
* Fix tests
* Add tests
* Let's see what the CI does
* It fails on the code that tested the thing ofc
* It fails on the code that tested the thing ofc
* Revert test thingy
* Now the test works again, lovely
* Another one
* Fix websocket thingy
* Only copy when needed
* Improve comment
* Remove test
* Fix docstring
* I think this now also work since this transforms trigger to platform
* Add comment
* Update homeassistant/helpers/config_validation.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Update homeassistant/helpers/config_validation.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Update homeassistant/helpers/config_validation.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Check for mapping
* Add test
* Update homeassistant/helpers/config_validation.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Update test to also test for trigger keys
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Make statistics validation create issue registry issues
* Disable creating issue about outdated MariaDB version in tests
* Use call_soon_threadsafe instead of run_callback_threadsafe
* Update tests
* Fix flapping test
* Disable creating issue about outdated SQLite version in tests
* Implement agreed changes
* Add translation strings for issue titles
* Update test
* Reinitialize zeroconf discovery flow on unignore
* Adjust tests
* Improve comments
* Fix logic for updating discovery keys
* Add tests
* Use mock_config_flow helper in new config_entries test
* Add discovery_keys attribute to ConfigEntry
* Update zeroconf rediscovery
* Change type of ConfigEntry.discovery_keys
* Update tests
* Fix DiscoveryKey.from_json_dict and add tests
* Fix test
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add a syntax for merging lists of triggers
* Updating to the new syntax
* Update homeassistant/helpers/config_validation.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* fix suggestion
* update test and add comments
* not actually json
* move test to new file
* update tests
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Don't raise when registering entity service with invalid schema
* Update homeassistant/helpers/service.py
Co-authored-by: Robert Resch <robert@resch.dev>
---------
Co-authored-by: Robert Resch <robert@resch.dev>
* Limit maximum template render output to 256KiB
fixes#124931
256KiB is likely to still block the event loop for an unreasonable amont of
time but its likely someone is using the template engine for large
blocks of data so we want a limit which still allows that but has
a reasonable safety to prevent the system from crashing down
* Update homeassistant/helpers/template.py
* Do a sanity check of schema passed to EntityPlatform.async_register_entity_service
* Only attempt to check schema of Schema
* Handle All/Any wrapped in schema
* Clarify comment
* Apply suggestions from code review
Co-authored-by: Robert Resch <robert@resch.dev>
---------
Co-authored-by: Robert Resch <robert@resch.dev>
* Limit intent / llm API device_class slots to only necessary services and limited set of values
* Fix ruff errors
* Run ruff format
* Fix typing and improve output schema
* Fix schema and improve flattening
* Revert conftest
* Revert recorder
* Fix ruff format errors
* Update using latest version of voluptuous
* Remigrate device_registry created_at/modified_at
Nightly current does not boot up because the device registry
will have KeyError: created_at if the previous nightly was
installed.
* reduce
* split migration per discord comments
* Indicate database migration in /api/core/state response
* Change API response according to review comment
* Adjust API response
* Update test
* Add test
* init
* Update homeassistant/helpers/update_coordinator.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* fix typo, ruff
* consistency with rest, test
* pylint suppression
* ruff
* ruff
* switch to one test
* add last exc
* add tests for auth & Entry Errors
* move exceptions to correct test
* Update update_coordinator.py
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* test setup call
* simplify
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Add script llm tool
* Add tests
* More tests
* more test
* more test
* Add area and floor resolving
* coverage
* coverage
* fix ColorTempSelector
* fix mypy
* fix mypy
* add script reload test
* Cache script tool parameters
* Make custom_serializer a part of api
---------
Co-authored-by: Michael Hansen <mike@rhasspy.org>
* Include speech_slots in IntentResponse.as_dict
* Populate speech_slots only if available
* fix typo
* Add test
* test all fields
* Fix another test
---------
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Always do thread safety check when writing state
Refactor the 3 most common places where the thread safety check
for the event loop to be inline to make the check fast enough
that we can keep it long term. While code review catches most
of the thread safety issues in core, some of them still make
it through, and new ones keep getting added. Its not possible
to catch them all with manual code review, so its worth the
tiny overhead to check each time.
Previously the check was limited to custom components
because they were the most common source of thread
safety issues.
* Always do thread safety check when writing state
Refactor the 3 most common places where the thread safety check
for the event loop to be inline to make the check fast enough
that we can keep it long term. While code review catches most
of the thread safety issues in core, some of them still make
it through, and new ones keep getting added. Its not possible
to catch them all with manual code review, so its worth the
tiny overhead to check each time.
Previously the check was limited to custom components
because they were the most common source of thread
safety issues.
* async_fire is more common than expected with ccs
* fix mock
* fix hass mocking
* Automatically fill in slots from LLM context
* Add tests
* Apply suggestions from code review
Co-authored-by: Allen Porter <allen@thebends.org>
---------
Co-authored-by: Allen Porter <allen@thebends.org>
* Ignore deprecated open and close cover intents for LLMs
* Fix LLMs asking which area when there is only one device
* remove unrelated changed
* remove unrelated changes
* Add configuration option positive to DurationSelector
* Rename to allow_negative in conjunction with a deprecation notice
Co-authored-by: Erik Montnemery <erik@montnemery.com>
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* LLM Assist API to ignore timer intents if device doesn't support it
* Refactor to use API instances
* Extract ToolContext class
* Limit exposed intents based on exposed entities
These functions have been stripped down to always return
the same path so there was no longer a need to have a
function for this. This is left-over cleanup from
previous refactoring.
* initial commit
* Undo prompt chenges
* Move format_tool out of the class
* Only catch HomeAssistantError and vol.Invalid
* Add config flow option
* Fix type
* Add translation
* Allow changing API access from options flow
* Allow model picking
* Remove allowing HASS Access in main flow
* Move model to the top in options flow
* Make prompt conditional based on API access
* convert only once to dict
* Reduce debug logging
* Update title
* re-order models
* Address comments
* Move things
* Update labels
* Add tool call tests
* coverage
* Use LLM APIs
* Fixes
* Address comments
* Reinstate the title to not break entity name
---------
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Add llm helper
* break out Tool.specification as class members
* Format state output
* Fix intent tests
* Removed auto initialization of intents - let conversation platforms do that
* Handle DynamicServiceIntentHandler.extra_slots
* Add optional description to IntentTool init
* Add device_id and conversation_id parameters
* intent tests
* Add LLM tools tests
* coverage
* add agent_id parameter
* Apply suggestions from code review
* Apply suggestions from code review
* Apply suggestions from code review
* Apply suggestions from code review
* Apply suggestions from code review
* Fix tests
* Fix intent schema
* Allow a Python function to be registered as am LLM tool
* Add IntentHandler.effective_slot_schema
* Ensure IntentHandler.slot_schema to be vol.Schema
* Raise meaningful error on tool not found
* Move this change to a separate PR
* Update todo integration intent
* Remove Tool constructor
* Move IntentTool to intent helper
* Convert custom serializer into class method
* Remove tool_input from FunctionTool auto arguments to avoid recursion
* Remove conversion into Open API format
* Apply suggestions from code review
* Fix tests
* Use HassKey for helpers (see #117012)
* Add support for functions with typed lists, dicts, and sets as type hints
* Remove FunctionTool
* Added API to get registered intents
* Move IntentTool to the llm library
* Return only handlers in intents.async.get
* Removed llm tool registration from intent library
* Removed tool registration
* Add bind_hass back for now
* removed area and floor resolving
* fix test
* Apply suggestions from code review
* Improve coverage
* Fix intent_type type
* Temporary disable HassClimateGetTemperature intent
* Remove bind_hass
* Fix usage of slot schema
* Fix test
* Revert some test changes
* Don't mutate tool_input
---------
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Allow templates for enabling automation triggers
* Test exception for non-limited template
* Use `cv.template` instead of `cv.template_complex`
* skip trigger with invalid enable template
instead of returning and thus not evaluating other triggers
* Import and cache supported feature enum flags only when needed
* Add comment aboud being loaded from executor.
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
* Addition of add filter
This change adds an `add` filter, the addition equivalent of the existing `multiply` filter.
* Test for add filter
* Update test_template.py
* Update tests/helpers/test_template.py
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>