ha-mcp-dev 8.4.3.dev2613__tar.gz → 8.4.3.dev2618__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. {ha_mcp_dev-8.4.3.dev2613/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.4.3.dev2618}/PKG-INFO +8 -2
  2. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/README.md +7 -1
  3. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/pyproject.toml +1 -1
  4. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/backup_manager.py +1225 -82
  5. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/_handlers_backups.py +97 -23
  6. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/README.md +5 -3
  7. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/en.json +21 -1
  8. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/settings.js +106 -11
  9. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/auto_backup.py +70 -22
  10. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/backup.py +86 -18
  11. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/config_entry_flow.py +388 -15
  12. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/config_entry_flow_form.py +4 -1
  13. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_integrations.py +107 -61
  14. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618/src/ha_mcp_dev.egg-info}/PKG-INFO +8 -2
  15. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/LICENSE +0 -0
  16. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/MANIFEST.in +0 -0
  17. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/setup.cfg +0 -0
  18. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/__init__.py +0 -0
  19. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/__main__.py +0 -0
  20. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_pypi_marker +0 -0
  21. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_rich_compat.py +0 -0
  22. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/__init__.py +0 -0
  23. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/requirements.txt +0 -0
  24. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  25. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  26. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  27. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  28. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  29. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  30. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  31. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  32. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  33. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  34. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  35. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  36. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  37. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  38. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  39. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  40. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  41. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  42. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  43. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  44. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  45. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  46. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  47. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  48. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  49. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  50. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  51. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  52. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  53. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  54. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  55. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  56. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  57. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  58. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  59. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  60. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  61. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  62. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  63. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  64. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  65. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  66. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  67. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  68. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  69. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  70. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  71. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  72. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  73. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  74. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  75. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  76. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  77. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  78. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  79. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  80. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/_version.py +0 -0
  81. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/auth/__init__.py +0 -0
  82. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/auth/consent_form.py +0 -0
  83. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/auth/oidc_compat.py +0 -0
  84. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/auth/provider.py +0 -0
  85. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/browser_landing.py +0 -0
  86. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/client/__init__.py +0 -0
  87. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/client/rest_client.py +0 -0
  88. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/client/supervisor_client.py +0 -0
  89. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/client/websocket_client.py +0 -0
  90. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/client/websocket_listener.py +0 -0
  91. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/config.py +0 -0
  92. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  93. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  94. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  95. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  96. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  97. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  98. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/errors.py +0 -0
  99. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/ha_request_queue.py +0 -0
  100. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  101. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/llm_exposure.py +0 -0
  102. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/log_filters.py +0 -0
  103. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/policy/__init__.py +0 -0
  104. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/policy/approval_queue.py +0 -0
  105. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/policy/editing.py +0 -0
  106. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/policy/evaluator.py +0 -0
  107. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/policy/handlers.py +0 -0
  108. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/policy/middleware.py +0 -0
  109. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/policy/model.py +0 -0
  110. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/policy/persistence.py +0 -0
  111. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/policy/value_sources.py +0 -0
  112. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/py.typed +0 -0
  113. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/read_only.py +0 -0
  114. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/redaction.py +0 -0
  115. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/renamed_tools.py +0 -0
  116. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
  117. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
  118. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
  119. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
  120. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
  121. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
  122. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
  123. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
  124. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  125. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
  126. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/evals/area-target-over-entity-list/case.yaml +0 -0
  127. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/evals/arrive-home-automation/case.yaml +0 -0
  128. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/evals/assist-shortcut-card/case.yaml +0 -0
  129. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/evals/avg-temperature/case.yaml +0 -0
  130. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/evals/backup-deletion-confirmation/case.yaml +0 -0
  131. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/evals/blueprint-authoring/case.yaml +0 -0
  132. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/evals/button-event-entity/case.yaml +0 -0
  133. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/evals/device-id-trigger-migration/case.yaml +0 -0
  134. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/evals/helper-flow-fields-not-platform-yaml/case.yaml +0 -0
  135. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/evals/media-player-song/case.yaml +0 -0
  136. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/evals/motion-light-automation-mode/case.yaml +0 -0
  137. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/evals/rename-entity-impact-analysis/case.yaml +0 -0
  138. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/evals/template-attributes-yaml-exception/case.yaml +0 -0
  139. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/evals/timer-finished-automation/case.yaml +0 -0
  140. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/evals/vacuum-last-clean/case.yaml +0 -0
  141. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/scripts/check_eval_cases.py +0 -0
  142. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  143. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  144. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
  145. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  146. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  147. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  148. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  149. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  150. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  151. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  152. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  153. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  154. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  155. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  156. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  157. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/server.py +0 -0
  158. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/__init__.py +0 -0
  159. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  160. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  161. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  162. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  163. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  164. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  165. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  166. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  167. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  168. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/_theme.py +0 -0
  169. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  170. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  171. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  172. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  173. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  174. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  175. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  176. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  177. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  178. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  179. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  180. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  181. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  182. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  183. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  184. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/settings.css +0 -0
  185. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/settings_ui/settings.html +0 -0
  186. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/smoke_test.py +0 -0
  187. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  188. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/strict_bps.py +0 -0
  189. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tool_dispatch.py +0 -0
  190. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/__init__.py +0 -0
  191. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  192. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/best_practice_result.py +0 -0
  193. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  194. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  195. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  196. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/blueprint_write.py +0 -0
  197. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/bulk_selector.py +0 -0
  198. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/component_api.py +0 -0
  199. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/component_config_entries.py +0 -0
  200. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/component_config_reads.py +0 -0
  201. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  202. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/component_devices.py +0 -0
  203. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/component_registries.py +0 -0
  204. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  205. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  206. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  207. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  208. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
  209. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  210. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  211. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/device_control.py +0 -0
  212. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  213. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/hacs_registration.py +0 -0
  214. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/helpers.py +0 -0
  215. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
  216. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/log_common.py +0 -0
  217. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/log_sources.py +0 -0
  218. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  219. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  220. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/radio/__init__.py +0 -0
  221. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/radio/base.py +0 -0
  222. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/radio/matter.py +0 -0
  223. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/radio/thread.py +0 -0
  224. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  225. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/radio/zwave.py +0 -0
  226. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/reference_validator.py +0 -0
  227. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/registry.py +0 -0
  228. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  229. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  230. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  231. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  232. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  233. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  234. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  235. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  236. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  237. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  238. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  239. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  240. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_addons.py +0 -0
  241. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_areas.py +0 -0
  242. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  243. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  244. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  245. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_calendar.py +0 -0
  246. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_camera.py +0 -0
  247. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_categories.py +0 -0
  248. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_code.py +0 -0
  249. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  250. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  251. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  252. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  253. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  254. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  255. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_dev.py +0 -0
  256. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_energy.py +0 -0
  257. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_entities.py +0 -0
  258. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  259. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_groups.py +0 -0
  260. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_hacs.py +0 -0
  261. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_history.py +0 -0
  262. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_labels.py +0 -0
  263. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_logs.py +0 -0
  264. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_radio.py +0 -0
  265. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_registry.py +0 -0
  266. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_resources.py +0 -0
  267. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_search.py +0 -0
  268. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  269. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_service.py +0 -0
  270. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_services.py +0 -0
  271. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_system.py +0 -0
  272. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_themes.py +0 -0
  273. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_todo.py +0 -0
  274. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_traces.py +0 -0
  275. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_updates.py +0 -0
  276. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_utility.py +0 -0
  277. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  278. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  279. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  280. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/tools_zones.py +0 -0
  281. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/util_helpers.py +0 -0
  282. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/tools/validation_middleware.py +0 -0
  283. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/transforms/__init__.py +0 -0
  284. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/transforms/categorized_search.py +0 -0
  285. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  286. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/transport_security.py +0 -0
  287. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/update_check.py +0 -0
  288. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/utils/__init__.py +0 -0
  289. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/utils/config_hash.py +0 -0
  290. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/utils/config_write_lock.py +0 -0
  291. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  292. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/utils/data_paths.py +0 -0
  293. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  294. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/utils/domain_handlers.py +0 -0
  295. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/utils/entity_membership.py +0 -0
  296. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  297. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  298. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/utils/operation_manager.py +0 -0
  299. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/utils/python_sandbox.py +0 -0
  300. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/utils/skill_loader.py +0 -0
  301. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/utils/usage_logger.py +0 -0
  302. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/visibility/__init__.py +0 -0
  303. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/visibility/enforcement.py +0 -0
  304. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/visibility/model.py +0 -0
  305. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/visibility/persistence.py +0 -0
  306. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp/visibility/resolver.py +0 -0
  307. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
  308. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
  309. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
  310. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
  311. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
  312. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/tests/__init__.py +0 -0
  313. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/tests/test_constants.py +0 -0
  314. {ha_mcp_dev-8.4.3.dev2613 → ha_mcp_dev-8.4.3.dev2618}/tests/test_env_manager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 8.4.3.dev2613
3
+ Version: 8.4.3.dev2618
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Author-email: Julien <github@qc-h.net>
6
6
  License: MIT
@@ -244,6 +244,12 @@ Spend less time configuring, more time enjoying your smart home.
244
244
  | **💾 System** | Backup/restore, updates, apps, device registry |
245
245
  | **🔒 Safety** | Read Only Mode toggle, per-tool enable/disable, tool security policies (user approval), automatic edit backups |
246
246
 
247
+ Template helper edit backups capture persisted options through the HA-MCP custom component, using either its Server entry or File & YAML Tools entry. Helper edits, generic integration options edits, and deletion capture the stable config-entry identity and entity ID/name mapping. Capture refuses degraded secret scrubbing. Restoring an existing helper requires a fresh safety backup, removes optional settings absent from the snapshot, and verifies persisted options.
248
+
249
+ For Template backup listing and bulk deletion, filter by the config-entry ID returned as `entity_id` by capture. Capture accepts an entity alias; the history filters use the stable config-entry ID. Recreation reports its replacement config-entry ID and saved entity mapping separately.
250
+
251
+ If the original entry has been deleted, restore recreates the helper and reports its new config-entry ID. The saved entity ID and custom name are restored when available; an occupied entity ID is refused before creation. Older snapshots without entity metadata cannot preserve renamed entity IDs. If a collision or verification failure occurs after creation, the new helper and source backup are retained and the result reports the new entry for inspection. Other entity/device registry settings are not restored. Helper and integration edits through the same server wait until restore finishes; other Home Assistant clients are outside this coordination. Failed or uncertain restores report their outcome and safe refusal reasons; inspect the current helper before retrying.
252
+
247
253
  <details>
248
254
  <!-- TOOLS_TABLE_START -->
249
255
 
@@ -320,7 +326,7 @@ The **HA-MCP Custom Component** also powers a set of privileged tools that stand
320
326
  | `ha_write_file` *(beta)* | Write files to allowed directories |
321
327
  | `ha_delete_file` *(beta)* | Delete files from allowed directories |
322
328
 
323
- All other tools work without the component. These five return an error with installation instructions if the component is missing.
329
+ Template helper edit backups and restores also require the component, using either its Server entry or File & YAML Tools entry. These five tools return an error with installation instructions if the component is missing.
324
330
 
325
331
  These tools also require beta feature flags. See **[Beta Features](docs/beta.md)** for how to enable them — including the `ENABLE_BETA_FEATURES` master flag, which must be on before the filesystem/YAML sub-flags take effect.
326
332
 
@@ -212,6 +212,12 @@ Spend less time configuring, more time enjoying your smart home.
212
212
  | **💾 System** | Backup/restore, updates, apps, device registry |
213
213
  | **🔒 Safety** | Read Only Mode toggle, per-tool enable/disable, tool security policies (user approval), automatic edit backups |
214
214
 
215
+ Template helper edit backups capture persisted options through the HA-MCP custom component, using either its Server entry or File & YAML Tools entry. Helper edits, generic integration options edits, and deletion capture the stable config-entry identity and entity ID/name mapping. Capture refuses degraded secret scrubbing. Restoring an existing helper requires a fresh safety backup, removes optional settings absent from the snapshot, and verifies persisted options.
216
+
217
+ For Template backup listing and bulk deletion, filter by the config-entry ID returned as `entity_id` by capture. Capture accepts an entity alias; the history filters use the stable config-entry ID. Recreation reports its replacement config-entry ID and saved entity mapping separately.
218
+
219
+ If the original entry has been deleted, restore recreates the helper and reports its new config-entry ID. The saved entity ID and custom name are restored when available; an occupied entity ID is refused before creation. Older snapshots without entity metadata cannot preserve renamed entity IDs. If a collision or verification failure occurs after creation, the new helper and source backup are retained and the result reports the new entry for inspection. Other entity/device registry settings are not restored. Helper and integration edits through the same server wait until restore finishes; other Home Assistant clients are outside this coordination. Failed or uncertain restores report their outcome and safe refusal reasons; inspect the current helper before retrying.
220
+
215
221
  <details>
216
222
  <!-- TOOLS_TABLE_START -->
217
223
 
@@ -288,7 +294,7 @@ The **HA-MCP Custom Component** also powers a set of privileged tools that stand
288
294
  | `ha_write_file` *(beta)* | Write files to allowed directories |
289
295
  | `ha_delete_file` *(beta)* | Delete files from allowed directories |
290
296
 
291
- All other tools work without the component. These five return an error with installation instructions if the component is missing.
297
+ Template helper edit backups and restores also require the component, using either its Server entry or File & YAML Tools entry. These five tools return an error with installation instructions if the component is missing.
292
298
 
293
299
  These tools also require beta feature flags. See **[Beta Features](docs/beta.md)** for how to enable them — including the `ENABLE_BETA_FEATURES` master flag, which must be on before the filesystem/YAML sub-flags take effect.
294
300
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "8.4.3.dev2613"
7
+ version = "8.4.3.dev2618"
8
8
  description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
9
9
  readme = "README.md"
10
10
  # Upper bound widened to <3.15 so the package installs on Home Assistant's