ha-mcp-dev 8.2.0.dev2326__tar.gz → 8.2.0.dev2328__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 (267) hide show
  1. {ha_mcp_dev-8.2.0.dev2326/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.2.0.dev2328}/PKG-INFO +1 -1
  2. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/pyproject.toml +1 -1
  3. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/server.py +3 -2
  4. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/locales/zh-Hans.json +1 -1
  5. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/config_entry_flow.py +9 -2
  6. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_config_helpers.py +10 -3
  7. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_integrations.py +8 -4
  8. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_yaml_config.py +1 -1
  9. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
  10. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/LICENSE +0 -0
  11. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/MANIFEST.in +0 -0
  12. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/README.md +0 -0
  13. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/setup.cfg +0 -0
  14. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/__init__.py +0 -0
  15. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/__main__.py +0 -0
  16. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_pypi_marker +0 -0
  17. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_rich_compat.py +0 -0
  18. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/__init__.py +0 -0
  19. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/requirements.txt +0 -0
  20. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  21. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  22. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  23. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  24. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  25. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  26. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  27. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  28. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  29. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  30. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  31. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  32. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  33. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  34. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  35. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  36. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  37. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  38. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  39. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  40. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  41. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  42. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  43. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  44. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  45. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  46. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  47. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  48. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  49. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  50. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  51. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  52. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  53. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  54. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  55. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  56. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  57. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  58. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  59. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  60. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  61. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  62. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  63. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  64. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  65. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  66. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  67. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  68. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  69. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  70. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  71. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  72. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  73. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  74. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  75. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  76. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/_version.py +0 -0
  77. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/auth/__init__.py +0 -0
  78. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/auth/consent_form.py +0 -0
  79. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/auth/oidc_compat.py +0 -0
  80. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/auth/provider.py +0 -0
  81. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/backup_manager.py +0 -0
  82. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/browser_landing.py +0 -0
  83. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/client/__init__.py +0 -0
  84. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/client/rest_client.py +0 -0
  85. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/client/supervisor_client.py +0 -0
  86. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/client/websocket_client.py +0 -0
  87. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/client/websocket_listener.py +0 -0
  88. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/config.py +0 -0
  89. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  90. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  91. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  92. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  93. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  94. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  95. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/errors.py +0 -0
  96. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  97. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/llm_exposure.py +0 -0
  98. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/policy/__init__.py +0 -0
  99. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/policy/approval_queue.py +0 -0
  100. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/policy/editing.py +0 -0
  101. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/policy/evaluator.py +0 -0
  102. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/policy/handlers.py +0 -0
  103. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/policy/middleware.py +0 -0
  104. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/policy/model.py +0 -0
  105. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/policy/persistence.py +0 -0
  106. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/policy/value_sources.py +0 -0
  107. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/py.typed +0 -0
  108. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/read_only.py +0 -0
  109. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/redaction.py +0 -0
  110. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
  111. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
  112. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
  113. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
  114. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
  115. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
  116. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
  117. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
  118. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  119. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
  120. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  121. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
  122. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  123. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
  124. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  125. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  126. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  127. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  128. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  129. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  130. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  131. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  132. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  133. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  134. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  135. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/__init__.py +0 -0
  136. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  137. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  138. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  139. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  140. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  141. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  142. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  143. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  144. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  145. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/_theme.py +0 -0
  146. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  147. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  148. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  149. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  150. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  151. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  152. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  153. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  154. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  155. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  156. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  157. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  158. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/settings.css +0 -0
  159. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/settings.html +0 -0
  160. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/settings_ui/settings.js +0 -0
  161. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/smoke_test.py +0 -0
  162. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  163. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/strict_bps.py +0 -0
  164. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/__init__.py +0 -0
  165. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/auto_backup.py +0 -0
  166. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/backup.py +0 -0
  167. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  168. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/best_practice_result.py +0 -0
  169. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  170. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/component_api.py +0 -0
  171. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/component_config_reads.py +0 -0
  172. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/component_devices.py +0 -0
  173. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/component_registries.py +0 -0
  174. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  175. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  176. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  177. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  178. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/device_control.py +0 -0
  179. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  180. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/hacs_registration.py +0 -0
  181. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/helpers.py +0 -0
  182. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/radio/__init__.py +0 -0
  183. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/radio/base.py +0 -0
  184. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/radio/matter.py +0 -0
  185. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/radio/thread.py +0 -0
  186. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  187. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/radio/zwave.py +0 -0
  188. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/reference_validator.py +0 -0
  189. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/registry.py +0 -0
  190. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  191. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  192. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  193. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  194. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  195. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  196. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  197. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  198. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  199. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  200. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_addons.py +0 -0
  201. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_areas.py +0 -0
  202. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  203. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  204. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_calendar.py +0 -0
  205. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_camera.py +0 -0
  206. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_categories.py +0 -0
  207. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_code.py +0 -0
  208. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  209. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  210. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  211. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  212. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  213. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_dev.py +0 -0
  214. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_energy.py +0 -0
  215. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_entities.py +0 -0
  216. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  217. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_groups.py +0 -0
  218. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_hacs.py +0 -0
  219. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_history.py +0 -0
  220. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_labels.py +0 -0
  221. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_radio.py +0 -0
  222. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_registry.py +0 -0
  223. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_resources.py +0 -0
  224. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_search.py +0 -0
  225. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  226. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_service.py +0 -0
  227. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_services.py +0 -0
  228. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_system.py +0 -0
  229. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_themes.py +0 -0
  230. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_todo.py +0 -0
  231. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_traces.py +0 -0
  232. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_updates.py +0 -0
  233. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_utility.py +0 -0
  234. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  235. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  236. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/tools_zones.py +0 -0
  237. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/util_helpers.py +0 -0
  238. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/tools/validation_middleware.py +0 -0
  239. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/transforms/__init__.py +0 -0
  240. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/transforms/categorized_search.py +0 -0
  241. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  242. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/transport_security.py +0 -0
  243. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/update_check.py +0 -0
  244. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/utils/__init__.py +0 -0
  245. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/utils/config_hash.py +0 -0
  246. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/utils/config_write_lock.py +0 -0
  247. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/utils/data_paths.py +0 -0
  248. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/utils/domain_handlers.py +0 -0
  249. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  250. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  251. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/utils/operation_manager.py +0 -0
  252. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/utils/python_sandbox.py +0 -0
  253. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/utils/skill_loader.py +0 -0
  254. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/utils/usage_logger.py +0 -0
  255. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/visibility/__init__.py +0 -0
  256. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/visibility/enforcement.py +0 -0
  257. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/visibility/model.py +0 -0
  258. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/visibility/persistence.py +0 -0
  259. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp/visibility/resolver.py +0 -0
  260. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
  261. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
  262. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
  263. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
  264. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
  265. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/tests/__init__.py +0 -0
  266. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/tests/test_constants.py +0 -0
  267. {ha_mcp_dev-8.2.0.dev2326 → ha_mcp_dev-8.2.0.dev2328}/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.2.0.dev2326
3
+ Version: 8.2.0.dev2328
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "8.2.0.dev2326"
7
+ version = "8.2.0.dev2328"
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
@@ -603,14 +603,15 @@ class HomeAssistantSmartMCPServer:
603
603
  "conditions actions get show detail"
604
604
  ),
605
605
  # s09: "create helper" → ha_config_set_helper should outrank remove_helper
606
- # Covers all 27 helper types (12 simple + 15 flow-based, unified in #967).
606
+ # Covers all 29 helper types (12 simple + 17 flow-based, unified in #967).
607
607
  "ha_config_set_helper": (
608
608
  "create update new add helper "
609
609
  "input_boolean input_button input_number input_text input_datetime "
610
610
  "input_select counter timer schedule zone person tag "
611
611
  "template group utility_meter derivative min_max threshold "
612
612
  "integration statistics trend random filter tod "
613
- "generic_thermostat switch_as_x generic_hygrostat"
613
+ "generic_thermostat switch_as_x generic_hygrostat "
614
+ "history_stats mold_indicator"
614
615
  ),
615
616
  # Boost tools that compete with ha_search for common queries
616
617
  "ha_config_get_script": (
@@ -608,7 +608,7 @@
608
608
  },
609
609
  "ha_config_set_helper": {
610
610
  "title": "创建或更新辅助实体",
611
- "description": "创建或更新 Home Assistant 辅助实体与配置子条目(28 种类型,统一接口)。"
611
+ "description": "创建或更新 Home Assistant 辅助实体与配置子条目(30 种类型,统一接口)。"
612
612
  },
613
613
  "ha_config_set_label": {
614
614
  "title": "创建或更新标签",
@@ -7,7 +7,7 @@ Config Entry Flow API.
7
7
 
8
8
  The create/update entry point is the unified ha_config_set_helper tool in
9
9
  tools_config_helpers.py, which routes to create_flow_helper / update_flow_helper
10
- for the 15 helper types listed in FLOW_HELPER_TYPES.
10
+ for the 17 helper types listed in FLOW_HELPER_TYPES.
11
11
 
12
12
  The same flow walkers drive every other config-entry surface, not just
13
13
  helpers: ``ha_set_integration`` creates entries for arbitrary domains through
@@ -65,7 +65,10 @@ def _reject_redaction_sentinels(config_dict: dict[str, Any]) -> None:
65
65
  )
66
66
 
67
67
 
68
- # 15 helpers that use Config Entry Flow API (Issue #324).
68
+ # 17 helpers that use Config Entry Flow API (Issue #324, #2187).
69
+ # `otp` is the one helper-typed config flow deliberately left out: its confirm
70
+ # step demands a live TOTP code derived from the secret, which no flow walker
71
+ # can supply. It stays reachable through ha_set_integration(domain="otp").
69
72
  SUPPORTED_HELPERS = Literal[
70
73
  "template",
71
74
  "group",
@@ -82,6 +85,8 @@ SUPPORTED_HELPERS = Literal[
82
85
  "generic_thermostat",
83
86
  "switch_as_x",
84
87
  "generic_hygrostat",
88
+ "history_stats",
89
+ "mold_indicator",
85
90
  ]
86
91
 
87
92
  # Value-set form of SUPPORTED_HELPERS for runtime routing checks.
@@ -103,6 +108,8 @@ FLOW_HELPER_TYPES: frozenset[str] = frozenset(
103
108
  "generic_thermostat",
104
109
  "switch_as_x",
105
110
  "generic_hygrostat",
111
+ "history_stats",
112
+ "mold_indicator",
106
113
  }
107
114
  )
108
115
 
@@ -4398,6 +4398,7 @@ class HelperConfigTools:
4398
4398
  "generic_hygrostat",
4399
4399
  "generic_thermostat",
4400
4400
  "group",
4401
+ "history_stats",
4401
4402
  "input_boolean",
4402
4403
  "input_button",
4403
4404
  "input_datetime",
@@ -4406,6 +4407,7 @@ class HelperConfigTools:
4406
4407
  "input_text",
4407
4408
  "integration",
4408
4409
  "min_max",
4410
+ "mold_indicator",
4409
4411
  "person",
4410
4412
  "random",
4411
4413
  "schedule",
@@ -4702,7 +4704,8 @@ class HelperConfigTools:
4702
4704
  "helper_type='config_subentry' "
4703
4705
  "(template, group, utility_meter, derivative, min_max, threshold, "
4704
4706
  "integration, statistics, trend, random, filter, tod, "
4705
- "generic_thermostat, switch_as_x, generic_hygrostat). "
4707
+ "generic_thermostat, switch_as_x, generic_hygrostat, "
4708
+ "history_stats, mold_indicator). "
4706
4709
  "Ignored for simple helper types. "
4707
4710
  "Field set is delivered as data_schema on the first validation error."
4708
4711
  ),
@@ -4739,7 +4742,7 @@ class HelperConfigTools:
4739
4742
  ) -> dict[str, Any]:
4740
4743
  """
4741
4744
  Create or update Home Assistant helper entities and config subentries
4742
- (28 types, unified interface).
4745
+ (30 types, unified interface).
4743
4746
 
4744
4747
  MUST call ha_get_skill_guide OR refer to your locally installed skills first.
4745
4748
 
@@ -4753,9 +4756,13 @@ class HelperConfigTools:
4753
4756
 
4754
4757
  FLOW types (pass `config` dict, Config Entry Flow API): template, group,
4755
4758
  utility_meter, derivative, min_max, threshold, integration, statistics, trend,
4756
- random, filter, tod, generic_thermostat, switch_as_x, generic_hygrostat.
4759
+ random, filter, tod, generic_thermostat, switch_as_x, generic_hygrostat,
4760
+ history_stats, mold_indicator.
4757
4761
  Note: `tod` is the purpose-built "is-current-time-in-range" indicator
4758
4762
  (supports cross-midnight ranges, unlike `schedule`).
4763
+ Note: `otp` is a helper in the HA UI but is not offered here — its flow
4764
+ requires a live TOTP code. Create it with ha_set_integration(domain="otp"),
4765
+ as with any other helper-domain flow outside this list.
4759
4766
 
4760
4767
  CONFIG_SUBENTRY type (Config Subentry Flow API): config_subentry.
4761
4768
  Pass `entry_id`, `subentry_type`, and `config`. Pass `subentry_id` to
@@ -104,7 +104,7 @@ HelperTypeLiteral = Literal[
104
104
  "tag",
105
105
  # config-entry subentries
106
106
  "config_subentry",
107
- # 15 FLOW
107
+ # 17 FLOW
108
108
  "template",
109
109
  "group",
110
110
  "utility_meter",
@@ -120,6 +120,8 @@ HelperTypeLiteral = Literal[
120
120
  "generic_thermostat",
121
121
  "switch_as_x",
122
122
  "generic_hygrostat",
123
+ "history_stats",
124
+ "mold_indicator",
123
125
  ]
124
126
  assert set(get_args(HelperTypeLiteral)) == (
125
127
  SIMPLE_HELPER_TYPES | FLOW_HELPER_TYPES | {"config_subentry"}
@@ -1846,7 +1848,9 @@ class IntegrationTools:
1846
1848
 
1847
1849
  WHEN NOT TO USE:
1848
1850
  - Helpers (template, group, utility_meter, ...): use
1849
- ha_config_set_helper.
1851
+ ha_config_set_helper. The exception is `otp`, which is a helper in
1852
+ the HA UI but is created HERE via domain="otp" — its flow needs a
1853
+ live TOTP code, so ha_config_set_helper deliberately omits it.
1850
1854
  - Config subentries: use
1851
1855
  ha_config_set_helper(helper_type='config_subentry').
1852
1856
  - Removing an entry: use ha_remove_helpers_integrations.
@@ -2110,10 +2114,10 @@ class IntegrationTools:
2110
2114
  - SIMPLE (12, websocket-delete): input_button, input_boolean,
2111
2115
  input_select, input_number, input_text, input_datetime, counter,
2112
2116
  timer, schedule, zone, person, tag.
2113
- - FLOW (15, config-entry-delete via entity lookup): template, group,
2117
+ - FLOW (17, config-entry-delete via entity lookup): template, group,
2114
2118
  utility_meter, derivative, min_max, threshold, integration,
2115
2119
  statistics, trend, random, filter, tod, generic_thermostat,
2116
- switch_as_x, generic_hygrostat.
2120
+ switch_as_x, generic_hygrostat, history_stats, mold_indicator.
2117
2121
 
2118
2122
  ROUTING:
2119
2123
  - SIMPLE helper_type + bare helper_id or entity_id → websocket delete.
@@ -403,7 +403,7 @@ class YamlConfigTools:
403
403
  - Automations (storage-mode) -> ha_config_set_automation
404
404
  - Scripts (storage-mode) -> ha_config_set_script
405
405
  - Scenes (storage-mode) -> ha_config_set_scene
406
- - All 28 helper types (input_*, counter, timer, schedule, zone, person,
406
+ - All 30 helper types (input_*, counter, timer, schedule, zone, person,
407
407
  tag, group, min_max, threshold, derivative, statistics, utility_meter,
408
408
  trend, filter, switch_as_x, etc.) -> ha_config_set_helper
409
409
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 8.2.0.dev2326
3
+ Version: 8.2.0.dev2328
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