Skip to content

Fix exposure checks on some intents#118988

Merged
synesthesiam merged 11 commits into
devfrom
synesthesiam-20240605-fix-expose
Jun 7, 2024
Merged

Fix exposure checks on some intents#118988
synesthesiam merged 11 commits into
devfrom
synesthesiam-20240605-fix-expose

Conversation

@synesthesiam
Copy link
Copy Markdown
Contributor

Proposed change

Intent handlers deriving from ServiceIntentHandler benefit from a comprehensive set of checks, including verifying that matched entities are exposed to the requesting assistant.

There are several domains with intent handlers that do not derive from ServiceIntentHandler, including:

  • weather
  • climate
  • todo
  • humidifier

These intent handlers were not passing the required assistant info to the matching functions in order to filter out unexposed entities.

This PR adds exposure checks for the above domains, and ports their matching logic to use the newer async_match_targets function.

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New integration (thank you!)
  • New feature (which adds functionality to an existing integration)
  • Deprecation (breaking change to happen in the future)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

  • This PR fixes or closes issue: fixes #
  • This PR is related to issue:
  • Link to documentation pull request:

Checklist

  • The code change is tested and works locally.
  • Local tests pass. Your PR cannot be merged unless tests pass
  • There is no commented out code in this PR.
  • I have followed the development checklist
  • I have followed the perfect PR recommendations
  • The code has been formatted using Ruff (ruff format homeassistant tests)
  • Tests have been added to verify that the new code works.

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • The manifest file has all fields filled out correctly.
    Updated and included derived files by running: python3 -m script.hassfest.
  • New or updated dependencies have been added to requirements_all.txt.
    Updated by running python3 -m script.gen_requirements_all.
  • For the updated dependencies - a link to the changelog, or at minimum a diff between library versions is added to the PR description.
  • Untested files have been added to .coveragerc.

To help with the load of incoming pull requests:

@home-assistant
Copy link
Copy Markdown
Contributor

home-assistant Bot commented Jun 6, 2024

Hey there @home-assistant/core, mind taking a look at this pull request as it has been labeled with an integration (climate) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of climate can trigger bot actions by commenting:

  • @home-assistant close Closes the pull request.
  • @home-assistant rename Awesome new title Renames the pull request.
  • @home-assistant reopen Reopen the pull request.
  • @home-assistant unassign climate Removes the current integration label and assignees on the pull request, add the integration domain after the command.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component) to the pull request.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component) on the pull request.

@home-assistant
Copy link
Copy Markdown
Contributor

home-assistant Bot commented Jun 6, 2024

Hey there @home-assistant/core, @Shulyaka, mind taking a look at this pull request as it has been labeled with an integration (humidifier) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of humidifier can trigger bot actions by commenting:

  • @home-assistant close Closes the pull request.
  • @home-assistant rename Awesome new title Renames the pull request.
  • @home-assistant reopen Reopen the pull request.
  • @home-assistant unassign humidifier Removes the current integration label and assignees on the pull request, add the integration domain after the command.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component) to the pull request.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component) on the pull request.

@home-assistant
Copy link
Copy Markdown
Contributor

home-assistant Bot commented Jun 6, 2024

Hey there @home-assistant/core, mind taking a look at this pull request as it has been labeled with an integration (todo) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of todo can trigger bot actions by commenting:

  • @home-assistant close Closes the pull request.
  • @home-assistant rename Awesome new title Renames the pull request.
  • @home-assistant reopen Reopen the pull request.
  • @home-assistant unassign todo Removes the current integration label and assignees on the pull request, add the integration domain after the command.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component) to the pull request.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component) on the pull request.

@home-assistant
Copy link
Copy Markdown
Contributor

home-assistant Bot commented Jun 6, 2024

Hey there @home-assistant/core, mind taking a look at this pull request as it has been labeled with an integration (weather) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of weather can trigger bot actions by commenting:

  • @home-assistant close Closes the pull request.
  • @home-assistant rename Awesome new title Renames the pull request.
  • @home-assistant reopen Reopen the pull request.
  • @home-assistant unassign weather Removes the current integration label and assignees on the pull request, add the integration domain after the command.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component) to the pull request.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component) on the pull request.

@synesthesiam synesthesiam added this to the 2024.6.1 milestone Jun 6, 2024
@Shulyaka
Copy link
Copy Markdown
Contributor

Shulyaka commented Jun 6, 2024

Shouldn't we just derive them from ServiceIntentHandler? The climate and humidifier ones just call a service.

@synesthesiam
Copy link
Copy Markdown
Contributor Author

The climate intent gets the temperature, so it doesn't call a service. The humidifier intent that sets the humidity would be a good candidate, but the other intent that sets the mode will also turn the humidifier on if its off.

description = "Set desired humidity level"
slot_schema = {
vol.Required("name"): cv.string,
vol.Required("name"): intent.non_empty_string,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How does this translate to LLMs?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It protects the user from them 😄

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is to prevent the LLM from sending in an empty string and targeting all entities.

@synesthesiam synesthesiam merged commit 87114bf into dev Jun 7, 2024
@synesthesiam synesthesiam deleted the synesthesiam-20240605-fix-expose branch June 7, 2024 01:41
frenck pushed a commit that referenced this pull request Jun 7, 2024
* Check exposure in climate intent

* Check exposure in todo list

* Check exposure for weather

* Check exposure in humidity intents

* Add extra checks to weather tests

* Add more checks to todo intent test

* Move climate intents to async_match_targets

* Update test_intent.py

* Update test_intent.py

* Remove patch
@frenck frenck mentioned this pull request Jun 7, 2024
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 8, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants