ha-mcp-dev 9.1.0.dev3274__tar.gz → 9.1.0.dev3279__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 (827) hide show
  1. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/PKG-INFO +1 -1
  2. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/pyproject.toml +1 -1
  3. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/pyproject.toml.orig +1 -1
  4. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/rest_client.py +6 -6
  5. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/az.json +2 -0
  6. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/cs.json +2 -0
  7. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/de.json +2 -0
  8. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/eo.json +2 -0
  9. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/es.json +2 -0
  10. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/fr.json +2 -0
  11. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/it.json +2 -0
  12. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/ko.json +2 -0
  13. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/nl.json +2 -0
  14. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/pl.json +2 -0
  15. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/ru.json +2 -0
  16. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/sv.json +2 -0
  17. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/zh-Hans.json +2 -0
  18. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/zh-Hant.json +2 -0
  19. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/blueprint_sources.py +1 -1
  20. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_config_reads.py +7 -7
  21. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_devices.py +1 -1
  22. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_registry_lookup.py +2 -2
  23. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/log_sources_logbook.py +2 -5
  24. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/response_helpers.py +17 -0
  25. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/component.py +3 -1
  26. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/legacy.py +10 -10
  27. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/modes.py +1 -2
  28. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/overview.py +8 -7
  29. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/response.py +13 -13
  30. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/state.py +15 -15
  31. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_config_helpers.py +25 -22
  32. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_dev.py +1 -1
  33. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_entities.py +1 -1
  34. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_history.py +3 -3
  35. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_integrations.py +3 -3
  36. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_search.py +6 -6
  37. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_voice_assistant.py +1 -1
  38. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_zones.py +7 -6
  39. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/LICENSE +0 -0
  40. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/README.md +0 -0
  41. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/__init__.py +0 -0
  42. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/__main__.py +0 -0
  43. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_pypi_marker +0 -0
  44. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_rich_compat.py +0 -0
  45. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/__init__.py +0 -0
  46. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  47. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  48. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  49. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  50. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  51. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  52. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  53. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  54. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  55. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  56. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  57. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  58. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  59. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  60. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  61. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  62. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  63. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  64. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  65. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev_security.py +0 -0
  66. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  67. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  68. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  69. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  70. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  71. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  72. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  73. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  74. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  75. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  76. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  77. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  78. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  79. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  80. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  81. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  82. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  83. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  84. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  85. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  86. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  87. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  88. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  89. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  90. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  91. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  92. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  93. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  94. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  95. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  96. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  97. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  98. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  99. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  100. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  101. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  102. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  103. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  104. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  105. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  106. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  107. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/mixins/skills.py +0 -0
  108. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  109. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  110. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  111. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  112. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  113. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  114. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  115. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  116. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  117. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  118. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  119. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  120. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  121. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  122. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  123. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  124. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  125. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  126. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  127. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  128. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  129. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  130. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  131. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  132. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  133. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  134. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  135. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  136. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  137. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  138. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  139. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  140. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  141. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  142. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  143. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  144. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  145. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +0 -0
  146. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  147. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  148. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  149. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  150. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  151. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  152. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  153. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  154. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  155. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  156. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  157. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  158. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  159. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  160. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  161. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  162. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  163. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  164. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  165. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  166. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  167. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  168. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  169. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  170. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  171. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  172. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  173. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  174. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  175. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  176. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  177. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  178. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  179. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  180. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  181. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  182. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  183. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  184. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  185. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  186. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  187. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  188. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  189. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  190. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  191. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  192. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  193. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  194. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  195. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  196. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  197. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  198. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  199. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  200. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  201. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  202. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  203. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  204. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  205. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  206. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  207. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  208. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  209. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  210. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  211. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  212. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  213. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  214. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  215. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  216. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  217. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  218. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/mixins/extensions.py +0 -0
  219. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  220. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  221. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  222. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  223. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  224. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  225. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  226. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  227. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  228. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  229. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  230. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  231. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  232. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  233. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  234. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  235. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  236. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  237. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  238. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  239. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  240. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  241. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  242. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  243. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  244. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  245. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  246. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  247. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  248. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  249. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  250. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  251. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  252. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  253. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  254. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  255. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  256. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  257. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  258. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  259. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  260. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  261. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  262. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  263. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  264. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  265. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  266. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  267. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/__init__.py +0 -0
  268. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/_constants.py +0 -0
  269. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/_resources.py +0 -0
  270. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/_snapshot.py +0 -0
  271. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/_source.py +0 -0
  272. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/client.py +0 -0
  273. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/extension.py +0 -0
  274. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/models.py +0 -0
  275. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  276. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  277. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  278. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  279. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  280. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  281. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  282. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  283. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  284. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  285. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  286. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  287. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  288. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  289. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  290. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  291. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  292. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  293. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  294. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  295. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  296. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  297. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  298. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  299. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  300. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  301. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  302. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  303. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  304. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  305. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  306. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  307. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  308. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  309. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  310. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  311. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  312. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  313. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  314. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  315. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  316. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  317. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  318. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  319. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  320. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  321. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  322. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  323. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  324. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  325. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  326. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  327. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  328. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  329. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  330. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  331. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  332. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  333. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  334. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  335. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  336. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  337. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  338. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  339. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  340. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  341. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  342. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  343. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  344. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  345. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  346. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  347. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  348. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  349. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  350. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  351. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  352. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  353. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  354. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  355. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  356. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  357. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  358. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  359. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  360. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  361. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  362. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  363. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  364. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  365. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  366. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  367. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  368. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  369. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  370. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  371. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  372. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  373. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  374. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  375. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  376. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  377. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  378. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  379. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  380. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  381. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  382. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  383. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  384. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  385. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  386. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  387. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  388. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  389. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  390. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  391. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  392. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  393. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  394. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  395. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  396. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  397. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  398. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  399. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  400. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  401. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  402. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  403. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  404. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  405. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  406. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  407. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  408. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  409. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  410. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  411. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  412. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  413. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  414. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  415. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  416. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  417. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  418. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  419. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  420. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  421. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  422. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  423. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  424. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  425. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  426. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  427. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  428. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  429. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  430. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  431. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  432. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/_request_clock.py +0 -0
  433. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  434. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  435. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  436. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  437. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  438. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  439. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  440. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  441. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  442. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  443. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  444. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  445. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  446. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  447. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  448. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  449. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  450. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  451. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  452. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  453. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  454. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  455. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  456. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  457. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  458. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  459. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  460. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  461. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  462. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  463. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  464. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  465. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  466. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  467. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  468. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  469. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/requirements.txt +0 -0
  470. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  471. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  472. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  473. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  474. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  475. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  476. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  477. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  478. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  479. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  480. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  481. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  482. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  483. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  484. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  485. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  486. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  487. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  488. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  489. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  490. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  491. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  492. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  493. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  494. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  495. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  496. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  497. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  498. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  499. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  500. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  501. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  502. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  503. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  504. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  505. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  506. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  507. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  508. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  509. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  510. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  511. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  512. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  513. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  514. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  515. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  516. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  517. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  518. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  519. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  520. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  521. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  522. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  523. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  524. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  525. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  526. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_version.py +0 -0
  527. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/app_discovery.py +0 -0
  528. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/auth/__init__.py +0 -0
  529. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/auth/consent_form.py +0 -0
  530. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/auth/iss_stamp.py +0 -0
  531. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/auth/oidc_compat.py +0 -0
  532. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/auth/provider.py +0 -0
  533. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_dashboards.py +0 -0
  534. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_diff.py +0 -0
  535. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_entities.py +0 -0
  536. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_entity_ids.py +0 -0
  537. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_helper_target.py +0 -0
  538. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_integrations.py +0 -0
  539. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_manager.py +0 -0
  540. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_tags.py +0 -0
  541. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_todo.py +0 -0
  542. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_zones.py +0 -0
  543. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/browser_landing.py +0 -0
  544. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/__init__.py +0 -0
  545. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/admin_routes.py +0 -0
  546. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/error_log_journald.py +0 -0
  547. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/models.py +0 -0
  548. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/supervisor_client.py +0 -0
  549. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/websocket_client.py +0 -0
  550. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/websocket_listener.py +0 -0
  551. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/config.py +0 -0
  552. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/config_backup.py +0 -0
  553. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/config_meta.py +0 -0
  554. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/config_overrides.py +0 -0
  555. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/config_registry.py +0 -0
  556. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/config_settings.py +0 -0
  557. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  558. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  559. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  560. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/dashboard_screenshot/engine_compat.py +0 -0
  561. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  562. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  563. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  564. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/errors.py +0 -0
  565. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/ha_request_queue.py +0 -0
  566. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  567. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/http_transport.py +0 -0
  568. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/image_info.py +0 -0
  569. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/ipv6_lan_guard.py +0 -0
  570. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/listen_sockets.py +0 -0
  571. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/llm_exposure.py +0 -0
  572. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/log_filters.py +0 -0
  573. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/mcp_client_context.py +0 -0
  574. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/__init__.py +0 -0
  575. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/approval_queue.py +0 -0
  576. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/decision_pin.py +0 -0
  577. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/decisions.py +0 -0
  578. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/editing.py +0 -0
  579. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/evaluator.py +0 -0
  580. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/events.py +0 -0
  581. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/handlers.py +0 -0
  582. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/middleware.py +0 -0
  583. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/model.py +0 -0
  584. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/mrtr.py +0 -0
  585. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/persistence.py +0 -0
  586. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/server_channels.py +0 -0
  587. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/value_sources.py +0 -0
  588. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/py.typed +0 -0
  589. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/read_only.py +0 -0
  590. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/redaction.py +0 -0
  591. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/renamed_tools.py +0 -0
  592. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  593. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  594. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  595. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
  596. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  597. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  598. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  599. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  600. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  601. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  602. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  603. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  604. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  605. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  606. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  607. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
  608. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  609. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/server.py +0 -0
  610. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/server_instructions.py +0 -0
  611. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/server_lifespan.py +0 -0
  612. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/server_tool_text.py +0 -0
  613. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/__init__.py +0 -0
  614. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  615. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  616. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  617. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_handlers_oauth_callbacks.py +0 -0
  618. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  619. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  620. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  621. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  622. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  623. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  624. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  625. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_theme.py +0 -0
  626. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  627. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  628. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  629. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  630. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings.css +0 -0
  631. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings.html +0 -0
  632. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
  633. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
  634. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
  635. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
  636. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
  637. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
  638. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
  639. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
  640. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
  641. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/10_oauth_callbacks.js +0 -0
  642. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/smoke_test.py +0 -0
  643. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  644. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/storage_helper_types.py +0 -0
  645. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/strict_bps.py +0 -0
  646. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tool_dispatch.py +0 -0
  647. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/__init__.py +0 -0
  648. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/addon_connection_hints.py +0 -0
  649. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/area_messages.py +0 -0
  650. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/auto_backup.py +0 -0
  651. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/backup.py +0 -0
  652. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/backup_access.py +0 -0
  653. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/backup_on_demand.py +0 -0
  654. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/backup_snapshot.py +0 -0
  655. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/backup_snapshot_restore.py +0 -0
  656. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  657. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/best_practice_result.py +0 -0
  658. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  659. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  660. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/blueprint_write.py +0 -0
  661. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/bug_report_config.py +0 -0
  662. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/bug_report_redaction.py +0 -0
  663. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/bug_report_sources.py +0 -0
  664. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/bug_report_templates.py +0 -0
  665. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/bulk_selector.py +0 -0
  666. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/coercion.py +0 -0
  667. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_api.py +0 -0
  668. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_config_entries.py +0 -0
  669. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  670. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_helper_collections.py +0 -0
  671. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_registries.py +0 -0
  672. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_todo.py +0 -0
  673. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_backup.py +0 -0
  674. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  675. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  676. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
  677. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  678. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  679. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  680. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
  681. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  682. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_file_visibility.py +0 -0
  683. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
  684. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
  685. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/create.py +0 -0
  686. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
  687. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
  688. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/icon_route.py +0 -0
  689. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
  690. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
  691. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
  692. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
  693. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/update.py +0 -0
  694. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
  695. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
  696. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_write_errors.py +0 -0
  697. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_write_helpers.py +0 -0
  698. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/core_contract.py +0 -0
  699. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/dashboard_card_describe.py +0 -0
  700. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  701. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
  702. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/dashboard_read_errors.py +0 -0
  703. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/dev_backup.py +0 -0
  704. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/device_control.py +0 -0
  705. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/device_enrichment.py +0 -0
  706. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
  707. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/energy_preferences.py +0 -0
  708. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/entity_expose_batch.py +0 -0
  709. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
  710. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/entity_registration.py +0 -0
  711. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/entity_removal.py +0 -0
  712. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/entity_update_fields.py +0 -0
  713. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  714. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/flow_helper_lookup.py +0 -0
  715. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/hacs_backend.py +0 -0
  716. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/hacs_registration.py +0 -0
  717. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/helper_flows.py +0 -0
  718. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/helpers.py +0 -0
  719. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/history_response.py +0 -0
  720. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/integration_entry_state.py +0 -0
  721. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
  722. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/log_common.py +0 -0
  723. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/log_sources.py +0 -0
  724. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  725. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  726. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/radio/__init__.py +0 -0
  727. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/radio/base.py +0 -0
  728. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/radio/matter.py +0 -0
  729. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/radio/thread.py +0 -0
  730. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  731. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/radio/zwave.py +0 -0
  732. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
  733. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/recorder_errors.py +0 -0
  734. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/reference_validator.py +0 -0
  735. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/registry.py +0 -0
  736. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  737. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/scene_discovery.py +0 -0
  738. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/__init__.py +0 -0
  739. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/base.py +0 -0
  740. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/entities.py +0 -0
  741. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/server_version.py +0 -0
  742. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  743. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  744. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  745. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  746. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  747. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  748. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  749. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  750. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  751. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  752. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/statistics_calendar.py +0 -0
  753. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/statistics_helpers.py +0 -0
  754. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/statistics_resets.py +0 -0
  755. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/system_restart.py +0 -0
  756. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tool_hints.py +0 -0
  757. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  758. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_addons.py +0 -0
  759. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_areas.py +0 -0
  760. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  761. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  762. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  763. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_calendar.py +0 -0
  764. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_camera.py +0 -0
  765. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_categories.py +0 -0
  766. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_code.py +0 -0
  767. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  768. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  769. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  770. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  771. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  772. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_energy.py +0 -0
  773. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  774. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_groups.py +0 -0
  775. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_hacs.py +0 -0
  776. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_labels.py +0 -0
  777. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_logs.py +0 -0
  778. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_radio.py +0 -0
  779. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_registry.py +0 -0
  780. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_resources.py +0 -0
  781. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  782. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_service.py +0 -0
  783. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_services.py +0 -0
  784. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_system.py +0 -0
  785. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_themes.py +0 -0
  786. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_todo.py +0 -0
  787. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_traces.py +0 -0
  788. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_updates.py +0 -0
  789. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_utility.py +0 -0
  790. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  791. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  792. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/update_categories.py +0 -0
  793. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/util_helpers.py +0 -0
  794. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/validation_middleware.py +0 -0
  795. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/ws_waiters.py +0 -0
  796. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transforms/__init__.py +0 -0
  797. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transforms/categorized_search.py +0 -0
  798. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transforms/compact_params.py +0 -0
  799. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transforms/component_helpers.py +0 -0
  800. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transforms/component_search.py +0 -0
  801. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  802. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  803. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transport_security.py +0 -0
  804. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/update_check.py +0 -0
  805. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/__init__.py +0 -0
  806. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/config_hash.py +0 -0
  807. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/config_write_lock.py +0 -0
  808. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  809. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/data_paths.py +0 -0
  810. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  811. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/domain_handlers.py +0 -0
  812. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/entity_membership.py +0 -0
  813. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  814. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  815. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  816. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/operation_manager.py +0 -0
  817. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/python_sandbox.py +0 -0
  818. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  819. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/skill_loader.py +0 -0
  820. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/usage_logger.py +0 -0
  821. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/visibility/__init__.py +0 -0
  822. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/visibility/config_files.py +0 -0
  823. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/visibility/enforcement.py +0 -0
  824. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/visibility/identifier_aliases.py +0 -0
  825. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/visibility/model.py +0 -0
  826. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/visibility/persistence.py +0 -0
  827. {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/visibility/resolver.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 9.1.0.dev3274
3
+ Version: 9.1.0.dev3279
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Keywords: mcp,home-assistant,ai,automation,smart-home
6
6
  Author: Julien
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.1.0.dev3274"
7
+ version = "9.1.0.dev3279"
8
8
  description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13,<3.15"
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.1.0.dev3274"
7
+ version = "9.1.0.dev3279"
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
@@ -1959,8 +1959,8 @@ class HomeAssistantClient:
1959
1959
  for attempt in range(max_retries):
1960
1960
  # Whether the failure happened before a usable connection existed.
1961
1961
  # Failing to obtain one is transport death whatever class the
1962
- # manager raises, and it raises a bare ``Exception`` when
1963
- # ``connect()`` returns False, so this cannot be decided by type.
1962
+ # manager raises; an auth failure or the pool-lock guard's bare
1963
+ # ``Exception`` is not a connection error; type cannot decide this.
1964
1964
  acquiring = True
1965
1965
  try:
1966
1966
  # Use per-client WebSocket keyed to this client's credentials
@@ -1999,10 +1999,10 @@ class HomeAssistantClient:
1999
1999
  continue
2000
2000
 
2001
2001
  # Phase first, type second. Failing before a client exists is
2002
- # evidence about the transport whatever class was raised, and
2003
- # the pooled manager raises a bare ``Exception`` when
2004
- # ``connect()`` returns False, so that case cannot be decided
2005
- # by type. Past acquisition only the no-answer classes count:
2002
+ # evidence about the transport whatever class was raised; an
2003
+ # auth failure or the pool-lock guard's bare ``Exception`` is not
2004
+ # a no-answer class, so that case cannot be decided by type.
2005
+ # Past acquisition only the no-answer classes count:
2006
2006
  # ``send_command`` deliberately re-raises the original
2007
2007
  # ``ConnectionClosed`` / ``ConnectionResetError`` from the send
2008
2008
  # rather than wrapping it, to keep at-most-once semantics for
@@ -458,6 +458,8 @@
458
458
  "advanced.max_retries.help": "Uğursuz REST zəngi üçün yenidən cəhd büdcəsi.",
459
459
  "advanced.verify_ssl.label": "TLS sertifikatlarını yoxlayın",
460
460
  "advanced.verify_ssl.help": "Home Assistant serverinin TLS sertifikatını yoxlayın. Bunu yalnız etibarlı şəbəkədə, özünü imzalayan sertifikat və ya host adı uyğunsuzluğu üçün söndürün: o, nəqliyyat təhlükəsizliyini zəiflədir.",
461
+ "advanced.ipv6_allowed_networks.label": "İcazə verilən əlavə IPv6 şəbəkələri",
462
+ "advanced.ipv6_allowed_networks.help": "IPv6 klientləri bu serverin öz portuna yalnız yerli şəbəkədən daxil olur: loopback, link-local, unique local (fc00::/7) və Home Assistant hostunun birbaşa qoşulduğu şəbəkələr. IPv4 təsirlənmir. İcazə vermək üçün digər IPv6 şəbəkələrini vergül və ya yeni sətirlərlə ayıraraq siyahıya daxil edin (məsələn, 2001:db8:5::/48). ::/0 əlavə etmək marşrutlaşdırıcınız daxil olan IPv6 trafikinə icazə verərsə, internetdən gələnlər də daxil olmaqla bütün IPv6 klientlərinə icazə verir.",
461
463
  "advanced.fuzzy_threshold.label": "Qeyri-səlis axtarış həddi",
462
464
  "advanced.fuzzy_threshold.help": "Aşağı qiymətlər daha sərbəst obyekt uyğunlaşmasına imkan verir.",
463
465
  "advanced.automation_config_time_budget.label": "Avtomatlaşdırma konfiqurasiyaları üçün vaxt limiti (s)",
@@ -458,6 +458,8 @@
458
458
  "advanced.max_retries.help": "Rozpočet na opakování pro každé selhání volání REST.",
459
459
  "advanced.verify_ssl.label": "Ověřit certifikáty TLS",
460
460
  "advanced.verify_ssl.help": "Ověřit certifikát TLS serveru Home Assistant. Vypněte tuto možnost pouze v důvěryhodné síti pro autorsky podepsaný certifikát nebo neshodu názvů hostitelů: oslabuje to zabezpečení přenosu.",
461
+ "advanced.ipv6_allowed_networks.label": "Další povolené sítě IPv6",
462
+ "advanced.ipv6_allowed_networks.help": "Klienti IPv6 přistupují k vlastnímu portu tohoto serveru pouze z lokální sítě: loopback, link-local, unique local (fc00::/7) a sítí, ke kterým je hostitel Home Assistant přímo připojen. IPv4 to neovlivňuje. Uveďte další sítě IPv6, které chcete povolit, oddělené čárkami nebo novými řádky (například 2001:db8:5::/48). Přidáním ::/0 povolíte všechny klienty IPv6, včetně přístupu z internetu, pokud váš router propouští příchozí provoz IPv6.",
461
463
  "advanced.fuzzy_threshold.label": "Prahová hodnota fuzzy vyhledávání",
462
464
  "advanced.fuzzy_threshold.help": "Nižší hodnoty umožňují volnější shodu entit.",
463
465
  "advanced.automation_config_time_budget.label": "Časový rozpočet konfigurace automatizace (s)",
@@ -458,6 +458,8 @@
458
458
  "advanced.max_retries.help": "Wiederholungsbudget pro fehlgeschlagenem REST-Aufruf.",
459
459
  "advanced.verify_ssl.label": "TLS-Zertifikate überprüfen",
460
460
  "advanced.verify_ssl.help": "Überprüfe das TLS-Zertifikat des Home Assistant-Servers. Deaktiviere dies nur in einem vertrauenswürdigen Netzwerk, für ein selbstsigniertes Zertifikat oder bei einer Hostnamen-Abweichung: Dies schwächt die Transportsicherheit.",
461
+ "advanced.ipv6_allowed_networks.label": "Zusätzliche erlaubte IPv6-Netzwerke",
462
+ "advanced.ipv6_allowed_networks.help": "IPv6-Clients erreichen den Port dieses Servers nur aus dem lokalen Netzwerk: Loopback, Link-Local, Unique Local (fc00::/7) und die Netzwerke, mit denen der Home Assistant-Host direkt verbunden ist. IPv4 ist nicht betroffen. Liste weitere erlaubte IPv6-Netzwerke auf, getrennt durch Kommas oder neue Zeilen (zum Beispiel 2001:db8:5::/48). Das Hinzufügen von ::/0 erlaubt jeden IPv6-Client, einschließlich aus dem Internet, wenn dein Router eingehenden IPv6-Verkehr durchlässt.",
461
463
  "advanced.fuzzy_threshold.label": "Fuzzy-Such-Schwellenwert",
462
464
  "advanced.fuzzy_threshold.help": "Niedrigere Werte erlauben einen großzügigeren Entitätsabgleich.",
463
465
  "advanced.automation_config_time_budget.label": "Automatisierungskonfigurations-Zeitbudget (s)",
@@ -458,6 +458,8 @@
458
458
  "advanced.max_retries.help": "Buĝeto de reprovoj po malsukcesa REST-voko.",
459
459
  "advanced.verify_ssl.label": "Konfirmi TLS-atestilojn",
460
460
  "advanced.verify_ssl.help": "Konfirmi la TLS-atestilon de la servilo de Home Assistant. Malŝaltu ĉi tion nur ĉe fidinda reto, por memsubskribita atestilo aŭ mita gastnomo: ĝi malfortigas transportan sekurecon.",
461
+ "advanced.ipv6_allowed_networks.label": "Kromaj permesitaj retoj IPv6",
462
+ "advanced.ipv6_allowed_networks.help": "Klientoj IPv6 atingas la propran pordon de ĉi tiu servilo nur el la loka reto: loka buko, liglokala, unika loka (fc00::/7) kaj la retoj al kiuj la gastiganto de Home Assistant estas rekte konektita. IPv4 ne estas tuŝita. Listigu aliajn retojn IPv6 por permesi, apartigite per komoj aŭ novaj linioj (ekzemple 2001:db8:5::/48). Aldono de ::/0 permesas ĉiun klienton IPv6, inkluzive de tiu el la interreto se via enkursigilo tralasas envenantajn IPv6.",
461
463
  "advanced.fuzzy_threshold.label": "Sojlo de neklara serĉo",
462
464
  "advanced.fuzzy_threshold.help": "Pli malaltaj valoroj permesas pli malstriktan entan kongruon.",
463
465
  "advanced.automation_config_time_budget.label": "Tempa buĝeto por aŭtomatiga agordo (s)",
@@ -458,6 +458,8 @@
458
458
  "advanced.max_retries.help": "Presupuesto de reintentos por cada llamada REST fallida.",
459
459
  "advanced.verify_ssl.label": "Verificar certificados TLS",
460
460
  "advanced.verify_ssl.help": "Verificar el certificado TLS del servidor de Home Assistant. Desactiva esto solo en una red de confianza, para un certificado autofirmado o un desajuste de nombre de host: esto debilita la seguridad del transporte.",
461
+ "advanced.ipv6_allowed_networks.label": "Redes IPv6 adicionales permitidas",
462
+ "advanced.ipv6_allowed_networks.help": "Los clientes IPv6 llegan al puerto propio de este servidor solo desde la red local: bucle local (loopback), enlace local (link-local), locales únicas (fc00::/7) y las redes a las que el host de Home Assistant está conectado directamente. IPv4 no se ve afectado. Lista otras redes IPv6 para permitir, separadas por comas o saltos de línea (por ejemplo, 2001:db8:5::/48). Agregar ::/0 permite a cualquier cliente IPv6, incluso desde internet si tu router permite tráfico IPv6 entrante.",
461
463
  "advanced.fuzzy_threshold.label": "Umbral de la búsqueda difusa",
462
464
  "advanced.fuzzy_threshold.help": "Los valores más bajos permiten una coincidencia de entidades más flexible.",
463
465
  "advanced.automation_config_time_budget.label": "Presupuesto de tiempo para la configuración de automatizaciones (s)",
@@ -458,6 +458,8 @@
458
458
  "advanced.max_retries.help": "Budget de nouvelles tentatives par appel REST échoué.",
459
459
  "advanced.verify_ssl.label": "Vérifier les certificats TLS",
460
460
  "advanced.verify_ssl.help": "Vérifie le certificat TLS du serveur Home Assistant. Ne désactivez cette option que sur un réseau de confiance, pour un certificat auto-signé ou une non-correspondance de nom d'hôte : cela affaiblit la sécurité du transport.",
461
+ "advanced.ipv6_allowed_networks.label": "Réseaux IPv6 supplémentaires autorisés",
462
+ "advanced.ipv6_allowed_networks.help": "Les clients IPv6 atteignent le port propre de ce serveur uniquement depuis le réseau local : bouclage (loopback), lien local (link-local), unique local (fc00::/7) et les réseaux auxquels l'hôte Home Assistant est directement connecté. L'IPv4 n'est pas affectée. Listez les autres réseaux IPv6 à autoriser, séparés par des virgules ou des retours à la ligne (par exemple 2001:db8:5::/48). Ajouter ::/0 autorise tous les clients IPv6, y compris depuis Internet si votre routeur laisse passer le trafic IPv6 entrant.",
461
463
  "advanced.fuzzy_threshold.label": "Seuil de recherche floue",
462
464
  "advanced.fuzzy_threshold.help": "Des valeurs plus faibles permettent une correspondance d'entités plus souple.",
463
465
  "advanced.automation_config_time_budget.label": "Budget de temps de configuration d'automatisation (s)",
@@ -458,6 +458,8 @@
458
458
  "advanced.max_retries.help": "Budget di tentativi per chiamata REST non riuscita.",
459
459
  "advanced.verify_ssl.label": "Verifica i certificati TLS",
460
460
  "advanced.verify_ssl.help": "Verifica il certificato TLS del server Home Assistant. Disattiva questa opzione solo su una rete affidabile, per un certificato autofirmato o una mancata corrispondenza del nome host: indebolisce la sicurezza del trasporto.",
461
+ "advanced.ipv6_allowed_networks.label": "Reti IPv6 extra consentite",
462
+ "advanced.ipv6_allowed_networks.help": "I client IPv6 raggiungono la porta di questo server solo dalla rete locale: loopback, link-local, unique local (fc00::/7) e le reti a cui l'host di Home Assistant è direttamente connesso. L'IPv4 non è interessato. Elenca altre reti IPv6 da consentire, separate da virgole o nuove righe (ad esempio 2001:db8:5::/48). L'aggiunta di ::/0 consente qualsiasi client IPv6, anche da Internet se il tuo router lascia passare il traffico IPv6 in ingresso.",
461
463
  "advanced.fuzzy_threshold.label": "Soglia della ricerca approssimata",
462
464
  "advanced.fuzzy_threshold.help": "Valori più bassi consentono una corrispondenza delle entità meno rigida.",
463
465
  "advanced.automation_config_time_budget.label": "Tempo massimo per le configurazioni delle automazioni (s)",
@@ -458,6 +458,8 @@
458
458
  "advanced.max_retries.help": "실패한 REST 호출당 재시도 예산.",
459
459
  "advanced.verify_ssl.label": "TLS 인증서 확인",
460
460
  "advanced.verify_ssl.help": "Home Assistant 서버의 TLS 인증서를 확인합니다. 자체 서명된 인증서나 호스트 이름 불일치의 경우에만 신뢰할 수 있는 네트워크에서 이 기능을 끄십시오. 전송 보안이 약화됩니다.",
461
+ "advanced.ipv6_allowed_networks.label": "허용할 추가 IPv6 네트워크",
462
+ "advanced.ipv6_allowed_networks.help": "IPv6 클라이언트는 루프백, 링크 로컬, 고유 로컬(fc00::/7) 및 Home Assistant 호스트가 직접 연결된 네트워크와 같은 로컬 네트워크에서만 이 서버의 자체 포트에 접근할 수 있습니다. IPv4는 영향을 받지 않습니다. 쉼표나 줄바꿈으로 구분하여 허용할 다른 IPv6 네트워크를 나열하세요(예: 2001:db8:5::/48). ::/0을 추가하면 라우터가 인바운드 IPv6를 허용하는 경우 인터넷을 포함한 모든 IPv6 클라이언트가 허용됩니다.",
461
463
  "advanced.fuzzy_threshold.label": "유사 검색 임계값",
462
464
  "advanced.fuzzy_threshold.help": "낮은 값을 설정할수록 더 느슨한 엔티티 일치가 허용됩니다.",
463
465
  "advanced.automation_config_time_budget.label": "자동화 설정 조회 시간 예산(초)",
@@ -458,6 +458,8 @@
458
458
  "advanced.max_retries.help": "Pogingenbudget per mislukte REST-aanroep.",
459
459
  "advanced.verify_ssl.label": "TLS-certificaten verifiëren",
460
460
  "advanced.verify_ssl.help": "Verifieer het TLS-certificaat van de Home Assistant-server. Schakel dit alleen uit op een vertrouwd netwerk, voor een zelfondertekend certificaat of een hostnaamafwijking: dit verzwakt de transportbeveiliging.",
461
+ "advanced.ipv6_allowed_networks.label": "Extra toegestane IPv6-netwerken",
462
+ "advanced.ipv6_allowed_networks.help": "IPv6-clients bereiken de eigen poort van deze server alleen vanuit het lokale netwerk: loopback, link-local, unique local (fc00::/7) en de netwerken waarmee de Home Assistant-host direct is verbonden. IPv4 blijft ongewijzigd. Vermeld andere toe te staan IPv6-netwerken, gescheiden door komma's of nieuwe regels (bijvoorbeeld 2001:db8:5::/48). Het toevoegen van ::/0 staat elke IPv6-client toe, ook vanaf het internet als je router inkomend IPv6 doorlaat.",
461
463
  "advanced.fuzzy_threshold.label": "Fuzzy-zoekdrempel",
462
464
  "advanced.fuzzy_threshold.help": "Lagere waarden staan lossere entiteitsovereenkomsten toe.",
463
465
  "advanced.automation_config_time_budget.label": "Tijdsbudget voor automatiseringsconfiguratie (s)",
@@ -458,6 +458,8 @@
458
458
  "advanced.max_retries.help": "Budżet ponowień dla nieudanego wywołania REST.",
459
459
  "advanced.verify_ssl.label": "Weryfikuj certyfikaty TLS",
460
460
  "advanced.verify_ssl.help": "Weryfikuje certyfikat TLS serwera Home Assistant. Wyłącz tę opcję tylko w zaufanej sieci, dla certyfikatu z podpisem własnym lub niezgodności nazwy hosta: osłabia to bezpieczeństwo transportu.",
461
+ "advanced.ipv6_allowed_networks.label": "Dodatkowe dozwolone sieci IPv6",
462
+ "advanced.ipv6_allowed_networks.help": "Klienci IPv6 mogą łączyć się z własnym portem tego serwera tylko z sieci lokalnej: loopback, link-local, unique local (fc00::/7) oraz sieci, z którymi host Home Assistant jest bezpośrednio połączony. Protokół IPv4 nie jest tym objęty. Wymień inne sieci IPv6, które chcesz dopuścić, oddzielając je przecinkami lub nowymi liniami (na przykład 2001:db8:5::/48). Dodanie ::/0 zezwala każdemu klientowi IPv6, w tym z internetu, jeśli Twój router przepuszcza ruch przychodzący IPv6.",
461
463
  "advanced.fuzzy_threshold.label": "Próg wyszukiwania rozmytego",
462
464
  "advanced.fuzzy_threshold.help": "Niższe wartości pozwalają na luźniejsze dopasowywanie encji.",
463
465
  "advanced.automation_config_time_budget.label": "Limit czasu konfiguracji automatyzacji (s)",
@@ -458,6 +458,8 @@
458
458
  "advanced.max_retries.help": "Бюджет повторных попыток для каждого неудачного REST-вызова.",
459
459
  "advanced.verify_ssl.label": "Проверять TLS-сертификаты",
460
460
  "advanced.verify_ssl.help": "Проверять TLS-сертификат сервера Home Assistant. Отключайте это только в доверенной сети для самоподписанного сертификата или несовпадения имени хоста: это снижает безопасность передачи данных.",
461
+ "advanced.ipv6_allowed_networks.label": "Дополнительные разрешенные сети IPv6",
462
+ "advanced.ipv6_allowed_networks.help": "Клиенты IPv6 могут обращаться к собственному порту этого сервера только из локальной сети: loopback, link-local, unique local (fc00::/7) и сетей, к которым напрямую подключен хост Home Assistant. IPv4 это не затрагивает. Перечислите другие разрешенные сети IPv6 через запятую или с новой строки (например, 2001:db8:5::/48). Добавление ::/0 разрешает доступ всем клиентам IPv6, включая интернет, если ваш роутер пропускает входящий трафик IPv6.",
461
463
  "advanced.fuzzy_threshold.label": "Порог нечёткого поиска",
462
464
  "advanced.fuzzy_threshold.help": "Меньшие значения допускают более нечеткое сопоставление сущностей.",
463
465
  "advanced.automation_config_time_budget.label": "Бюджет времени конфигураций автоматизаций (с)",
@@ -458,6 +458,8 @@
458
458
  "advanced.max_retries.help": "Antal tillåtna försök per misslyckat REST-anrop.",
459
459
  "advanced.verify_ssl.label": "Verifiera TLS-certifikat",
460
460
  "advanced.verify_ssl.help": "Verifiera Home Assistant-serverns TLS-certifikat. Stäng bara av detta på ett betrott nätverk, för ett självsignerat certifikat eller om värdnamnet inte matchar: det försvagar transportsäkerheten.",
461
+ "advanced.ipv6_allowed_networks.label": "Extra IPv6-nätverk som tillåts",
462
+ "advanced.ipv6_allowed_networks.help": "IPv6-klienter når denna servers egen port endast från det lokala nätverket: loopback, link-local, unique local (fc00::/7) och de nätverk som Home Assistant-värden är direkt ansluten till. IPv4 påverkas inte. Lista andra IPv6-nätverk att tillåta, separerade med kommatecken eller nya rader (till exempel 2001:db8:5::/48). Att lägga till ::/0 tillåter alla IPv6-klienter, inklusive från internet om din router släpper igenom inkommande IPv6.",
461
463
  "advanced.fuzzy_threshold.label": "Fuzzy-sökningströskel",
462
464
  "advanced.fuzzy_threshold.help": "Lägre värden tillåter mer tillåtande entitetsmatchning.",
463
465
  "advanced.automation_config_time_budget.label": "Tidsbudget för automatiseringskonfiguration (s)",
@@ -458,6 +458,8 @@
458
458
  "advanced.max_retries.help": "每次失败的 REST 调用的重试预算。",
459
459
  "advanced.verify_ssl.label": "验证 TLS 证书",
460
460
  "advanced.verify_ssl.help": "验证 Home Assistant 服务器的 TLS 证书。仅在受信任的网络上、针对自签名证书或主机名不匹配的情况关闭此选项:这会削弱传输安全性。",
461
+ "advanced.ipv6_allowed_networks.label": "允许的额外 IPv6 网络",
462
+ "advanced.ipv6_allowed_networks.help": "IPv6 客户端仅能从本地网络访问该服务器自身的端口:回环、链路本地、唯一本地(fc00::/7)以及 Home Assistant 主机直接连接的网络。IPv4 不受影响。请列出需要允许的其他 IPv6 网络,以逗号或换行符分隔(例如 2001:db8:5::/48)。添加 ::/0 将允许所有 IPv6 客户端,如果您的路由器允许入站 IPv6 流量,则也包括来自互联网的客户端。",
461
463
  "advanced.fuzzy_threshold.label": "模糊搜索阈值",
462
464
  "advanced.fuzzy_threshold.help": "较低的值允许更宽松的实体匹配。",
463
465
  "advanced.automation_config_time_budget.label": "自动化配置时间预算(秒)",
@@ -458,6 +458,8 @@
458
458
  "advanced.max_retries.help": "每個失敗 REST 呼叫的重試預算。",
459
459
  "advanced.verify_ssl.label": "驗證 TLS 憑證",
460
460
  "advanced.verify_ssl.help": "驗證 Home Assistant 伺服器的 TLS 憑證。僅在受信賴的網路、針對自簽憑證或主機名稱不符的情況下關閉此功能:這會削弱傳輸安全性。",
461
+ "advanced.ipv6_allowed_networks.label": "允許的額外 IPv6 網路",
462
+ "advanced.ipv6_allowed_networks.help": "IPv6 用戶端僅能從本機網路存取此伺服器本身的連接埠:回送(loopback)、鏈路本機(link-local)、唯一本機(fc00::/7)以及 Home Assistant 主機直接連接的網路。IPv4 不受影響。列出要允許的其他 IPv6 網路,以逗號或新行分隔(例如 2001:db8:5::/48)。新增 ::/0 將允許所有 IPv6 用戶端,若您的路由器允許入站 IPv6,也包含來自網際網路的用戶端。",
461
463
  "advanced.fuzzy_threshold.label": "模糊搜尋閾值",
462
464
  "advanced.fuzzy_threshold.help": "較低的值允許較寬鬆的實體比對。",
463
465
  "advanced.automation_config_time_budget.label": "自動化設定時間預算(秒)",
@@ -219,7 +219,7 @@ async def _via_component(client: Any, domain: str, path: str) -> _ComponentBody:
219
219
  )
220
220
  return _NO_COMPONENT_BODY
221
221
  except Exception as exc: # noqa: BLE001
222
- # HomeAssistantConnectionError / plain establish Exception → metadata-only
222
+ # HomeAssistantConnectionError or any other error → metadata-only
223
223
  # (no full-body legacy fetch exists; the base metadata is already served).
224
224
  logger.warning(
225
225
  "ha_mcp_tools/blueprint_get connection error; served metadata-only: %r",
@@ -27,11 +27,11 @@ returns its payload (an entity_lookup with an EMPTY ``matches`` list is
27
27
  authoritative — "no registry entry with that unique_id" — kept distinct from the
28
28
  ``None`` miss).
29
29
 
30
- Both helpers apply the uniform transport-fallback taxonomy: a
31
- ``HomeAssistantConnectionError`` off ``send_command`` — and the plain
32
- ``Exception`` ``get_websocket_client()`` raises when ``WebSocketManager`` cannot
33
- (re)build the pooled socket — are caught and mapped to ``None`` so the legacy
34
- path runs, NEVER propagated out of the read. Neither consumer's legacy path dies
30
+ Both helpers apply the uniform transport-fallback taxonomy: a transport failure
31
+ — ``HomeAssistantConnectionError`` off ``send_command`` or from a failed (re)build
32
+ of the pooled socket in ``get_websocket_client()``, or ``HomeAssistantAuthError``
33
+ when HA rejects the token — is caught and mapped to ``None`` so the legacy path
34
+ runs, NEVER propagated out of the read. Neither consumer's legacy path dies
35
35
  identically on a pooled-WS drop, so propagating would abort work the legacy path
36
36
  still completes:
37
37
 
@@ -120,8 +120,8 @@ async def fetch_entity_lookup_via_component(
120
120
  logger.warning("%s failed; fell back to legacy: %r", WS_ENTITY_LOOKUP, exc)
121
121
  return None
122
122
  except Exception as exc: # noqa: BLE001
123
- # HomeAssistantConnectionError: a pooled-WS drop or a failed
124
- # (re)connect.
123
+ # HomeAssistantConnectionError (a pooled-WS drop or a failed
124
+ # (re)connect) or any other error.
125
125
  # The resolvers' legacy paths do NOT die identically (see module docstring),
126
126
  # so route to legacy rather than escape.
127
127
  logger.warning(
@@ -193,7 +193,7 @@ async def fetch_device_list_via_component(client: Any) -> dict[str, Any] | None:
193
193
  logger.warning("%s failed; fell back to legacy: %r", WS_DEVICE_LIST, exc)
194
194
  return None
195
195
  except Exception as exc: # noqa: BLE001
196
- # HomeAssistantConnectionError / plain establish Exception → legacy (the
196
+ # HomeAssistantConnectionError or any other error → legacy (the
197
197
  # legacy device list rides the send_websocket_message bridge).
198
198
  logger.warning(
199
199
  "%s connection error; falling back to legacy: %r", WS_DEVICE_LIST, exc
@@ -104,7 +104,7 @@ async def fetch_entities_for_config_entry_via_component(
104
104
  )
105
105
  return None
106
106
  except Exception as exc: # noqa: BLE001
107
- # HomeAssistantConnectionError / plain establish Exception → legacy (the
107
+ # HomeAssistantConnectionError or any other error → legacy (the
108
108
  # legacy entity_registry/list dump rides the bridge; see module
109
109
  # docstring). Never propagate a transport failure out of the read.
110
110
  logger.warning(
@@ -159,7 +159,7 @@ async def resolve_entities_via_component(
159
159
  )
160
160
  return None
161
161
  except Exception as exc: # noqa: BLE001
162
- # HomeAssistantConnectionError / plain establish Exception → legacy. The
162
+ # HomeAssistantConnectionError or any other error → legacy. The
163
163
  # simple-delete consumer's legacy per-id retry loop only runs when this
164
164
  # returns None, so an escaping transport failure would skip it entirely.
165
165
  logger.warning(
@@ -602,12 +602,9 @@ class LogbookLogSourceMixin:
602
602
  order,
603
603
  )
604
604
 
605
- wrapped = await add_timezone_metadata(self._client, logbook_data)
606
605
  if transport_warnings:
607
- # Top-level, alongside the other tool warnings: nesting these
608
- # under ``data`` would hide them from the warning merger.
609
- wrapped["warnings"] = transport_warnings + wrapped.get("warnings", [])
610
- return wrapped
606
+ logbook_data["warnings"] = transport_warnings
607
+ return await add_timezone_metadata(self._client, logbook_data)
611
608
 
612
609
  except ToolError:
613
610
  raise
@@ -416,10 +416,27 @@ async def add_timezone_metadata(
416
416
  - Naive strings (no offset) are assumed to be UTC before conversion.
417
417
  - ``ZoneInfoNotFoundError`` (tzdata not installed) falls back to UTC.
418
418
  - Any config-fetch failure also falls back to UTC without conversion.
419
+
420
+ A top-level ``warnings`` list in *data* is returned beside ``data`` instead
421
+ of inside it, ahead of any timezone warning the wrapper adds, and omitted
422
+ when empty; *data* itself is left unchanged.
419
423
  """
420
424
  if not include_metadata:
421
425
  return data
422
426
 
427
+ result = await _wrap_with_timezone(client, data, convert_timestamps)
428
+ inner = result["data"]
429
+ if isinstance(inner, dict) and isinstance(inner.get("warnings"), list):
430
+ result["data"] = {k: v for k, v in inner.items() if k != "warnings"}
431
+ if warnings := inner["warnings"] + result.get("warnings", []):
432
+ result["warnings"] = warnings
433
+ return result
434
+
435
+
436
+ async def _wrap_with_timezone(
437
+ client: Any, data: dict[str, Any], convert_timestamps: bool
438
+ ) -> dict[str, Any]:
439
+ """Fetch the timezone, convert *data* and wrap it; may add top-level ``warnings``."""
423
440
  ha_timezone, fetch_failed = await fetch_ha_timezone(client)
424
441
 
425
442
  if not convert_timestamps:
@@ -767,7 +767,9 @@ class ComponentSearchMixin(LegacySearchMixin):
767
767
  ``send_websocket_message`` bridge, so a component-side fault degrades
768
768
  to partial results rather than escaping. The bridge shares this
769
769
  pooled connection, so a dead transport raises there too (#1947) and
770
- the registry-unavailable warning names what was skipped.
770
+ the registry-unavailable warning names what was skipped. When no
771
+ legacy surface answers either, the legacy search raises its
772
+ structured error instead.
771
773
  """
772
774
  if isinstance(exc, (HomeAssistantCommandError, HomeAssistantCommandTimeout)):
773
775
  if is_unknown_command(exc):
@@ -135,6 +135,14 @@ class LegacySearchMixin(EntityModesMixin):
135
135
  continue
136
136
  _apply_search_outcome(response, label, outcome)
137
137
 
138
+ if outcomes and len(errors) == len(outcomes):
139
+ # No surface answered, so empty buckets would read as "nothing
140
+ # matched": report the first surface's error instead.
141
+ first = cast(Exception, outcomes[0])
142
+ if isinstance(first, ToolError):
143
+ raise first
144
+ exception_to_structured_error(first)
145
+
138
146
  # ``count`` mirrors the previous ha_search_entities semantics: items
139
147
  # returned in this response (post-pagination), not total matches across
140
148
  # the corpus. Total matches live in entity_total_matches +
@@ -347,17 +355,9 @@ class LegacySearchMixin(EntityModesMixin):
347
355
  # carry area_result's warnings; forward them here in one place so a
348
356
  # visibility/registry degradation on the area path is not silently
349
357
  # dropped (mirrors the non-area path's merge_visibility_warnings).
350
- # The builders now return the search dict directly (no
351
- # add_timezone_metadata wrapper), so warnings merge into that dict;
352
- # the ``["data"]`` unwrap is a defensive holdover for a hypothetical
353
- # future wrapped payload.
354
- warn_target = (
355
- area_search["data"]
356
- if isinstance(area_search, dict) and "data" in area_search
357
- else area_search
358
+ return merge_visibility_warnings(
359
+ area_search, area_result.get("warnings", [])
358
360
  )
359
- merge_visibility_warnings(warn_target, area_result.get("warnings", []))
360
- return area_search
361
361
 
362
362
  if domain_filter and (not query or not query.strip()):
363
363
  return await self._search_domain_only(
@@ -167,8 +167,7 @@ class EntityModesMixin(EntityEnrichmentMixin):
167
167
  merge_visibility_warnings(search_data, enrich_warnings)
168
168
 
169
169
  # No add_timezone_metadata: entity records carry no timestamp fields, so
170
- # the enrichment converted nothing and its /api/config fetch was pure
171
- # waste (the orchestrator discards its metadata wrapper anyway).
170
+ # the enrichment converted nothing and its /api/config fetch was pure waste.
172
171
  return search_data
173
172
 
174
173
  async def _search_area_only_populated(
@@ -468,13 +468,14 @@ class OverviewMixin(SearchToolsBase):
468
468
  non-empty ``slice_errors`` — ``_build_overview_slices`` returns
469
469
  ``None``): treated like the command-error branch (legacy + warning +
470
470
  log), so a partial snapshot never serves a silently-degraded overview.
471
- - ``HomeAssistantConnectionError`` (pooled-WS drop) or the plain
472
- ``Exception`` ``get_websocket_client()`` raises on a failed (re)connect:
473
- served the same way — the legacy overview reads ``/api/states`` +
474
- ``/api/services`` over REST and the registries through the swallowing
475
- ``send_websocket_message`` bridge, so it degrades to a partial overview
476
- rather than dying identically on a pooled-WS drop; a transport failure
477
- must not escape.
471
+ - ``HomeAssistantConnectionError`` (pooled-WS drop or a failed (re)connect
472
+ in ``get_websocket_client()``): served the same way — the legacy
473
+ overview reads ``/api/states`` + ``/api/services`` over REST and the
474
+ registries through the ``send_websocket_message`` bridge, so it
475
+ degrades to a partial overview rather than dying identically on a
476
+ pooled-WS drop; a transport failure must not escape. A token HA
477
+ rejects (``HomeAssistantAuthError``) takes this branch too, but the
478
+ legacy reads use the same token and fail with it.
478
479
  """
479
480
  try:
480
481
  raw = await self._send_component_overview(inputs)
@@ -189,6 +189,17 @@ def _mirror_partial_to_warnings(response: dict[str, Any]) -> None:
189
189
  warnings.append(warning_text)
190
190
 
191
191
 
192
+ def _omit_empty_warnings(response: dict[str, Any]) -> dict[str, Any]:
193
+ """Drop an empty ``warnings`` list: the response contract omits it.
194
+
195
+ The builders seed ``warnings`` as ``[]`` so they can extend it; this runs
196
+ once on the finished response of every ``ha_search`` path.
197
+ """
198
+ if response.get("warnings") == []:
199
+ del response["warnings"]
200
+ return response
201
+
202
+
192
203
  def _project_response_fields(
193
204
  response: dict[str, Any], parsed_fields: list[str] | None
194
205
  ) -> dict[str, Any]:
@@ -500,20 +511,9 @@ def _build_hidden_ids(registry_result: Any) -> set[str]:
500
511
  def _apply_search_outcome(
501
512
  response: dict[str, Any],
502
513
  label: str,
503
- outcome: dict[str, Any],
514
+ payload: dict[str, Any],
504
515
  ) -> None:
505
- """Apply one gather outcome (entities or configs) to the response dict in-place.
506
-
507
- Both ``_ha_search_entities`` and ``_ha_deep_search`` return their search dict
508
- directly. The entity builders no longer wrap it via ``add_timezone_metadata``:
509
- entity-search records carry none of the timestamp fields that enrichment
510
- converts, so it was a discarded ``/api/config`` fetch. The ``{"data": ...}``
511
- unwrap is kept as a defensive no-op so a future wrapped payload still reads
512
- correctly.
513
- """
514
- payload = (
515
- outcome["data"] if isinstance(outcome, dict) and "data" in outcome else outcome
516
- )
516
+ """Apply one gather outcome (entities or configs) to the response dict in-place."""
517
517
  if label == "entities":
518
518
  response["entities"] = payload.get("results", [])
519
519
  response["entity_total_matches"] = payload.get("total_matches", 0)
@@ -13,7 +13,6 @@ from ...client.rest_client import (
13
13
  HomeAssistantAPIError,
14
14
  HomeAssistantCommandError,
15
15
  HomeAssistantCommandTimeout,
16
- HomeAssistantConnectionError,
17
16
  )
18
17
  from ...client.websocket_client import get_websocket_client
19
18
  from ...errors import create_validation_error
@@ -297,11 +296,11 @@ class StateMixin(SearchToolsBase):
297
296
  Returns the component's ``{states, missing}`` payload (found ids mapped to
298
297
  their ``State.as_dict()`` body) or ``None`` when the component lacks the
299
298
  ``states`` capability, was downgraded (``unknown_command`` → invalidate the
300
- cached caps), or errored (logged). Falls back **silently** — unlike
301
- ``ha_search`` / ``ha_get_zone`` which append a ``warnings[]`` entry —
302
- because ``ha_get_state``'s single- and bulk-mode responses do not share one
303
- warnings channel; the ``log.warning`` preserves operator visibility and the
304
- legacy REST path returns the byte-identical correct data either way.
299
+ cached caps), errored, or returned a malformed payload (both logged).
300
+ Falls back **silently** — unlike ``ha_search`` / ``ha_get_zone``, which
301
+ append a ``warnings[]`` entry — because the legacy REST path returns the
302
+ byte-identical correct data either way, so the caller has nothing to act
303
+ on; the ``log.warning`` preserves operator visibility.
305
304
  ``ha_get_state``'s legacy path is a REST ``get_entity_state`` read on a
306
305
  SEPARATE transport, so a WS transport/connect failure
307
306
  (``HomeAssistantConnectionError``, covering both a pooled-WS drop and a
@@ -316,11 +315,7 @@ class StateMixin(SearchToolsBase):
316
315
  return None
317
316
  try:
318
317
  raw = await self._send_component_states(entity_ids)
319
- except (
320
- HomeAssistantCommandError,
321
- HomeAssistantCommandTimeout,
322
- HomeAssistantConnectionError,
323
- ) as exc:
318
+ except (HomeAssistantCommandError, HomeAssistantCommandTimeout) as exc:
324
319
  if is_unknown_command(exc):
325
320
  invalidate_caps(self._client)
326
321
  else:
@@ -329,14 +324,19 @@ class StateMixin(SearchToolsBase):
329
324
  )
330
325
  return None
331
326
  except Exception as exc: # noqa: BLE001
332
- # Anything the tuple above doesn't cover → legacy REST, so an
333
- # install whose REST API still works keeps answering.
327
+ # Mostly HomeAssistantConnectionError (a pooled-WS drop or a failed
328
+ # (re)connect); a WS auth failure or a raw socket error lands here
329
+ # too. Legacy REST rides a separate transport, so an install whose
330
+ # REST API still works keeps answering.
334
331
  logger.warning(
335
332
  "ha_mcp_tools/states connection error; fell back to legacy: %r", exc
336
333
  )
337
334
  return None
338
- result = raw.get("result") or {}
339
- if not isinstance(result.get("states"), dict):
335
+ result = raw.get("result")
336
+ if not isinstance(result, dict) or not isinstance(result.get("states"), dict):
337
+ logger.warning(
338
+ "ha_mcp_tools/states returned a malformed payload; fell back to legacy"
339
+ )
340
340
  return None
341
341
  return result
342
342
 
@@ -212,25 +212,27 @@ class HelperConfigTools:
212
212
  # silent empty). Storage/collection types keep the legacy fallback.
213
213
  is_flow = helper_type not in SIMPLE_HELPER_TYPES
214
214
 
215
- # Prefer the custom component's in-process listing when it advertises
216
- # the capability: one WS round-trip that joins the entity registry, so
217
- # each record carries the current entity_id + display name (the #1794
218
- # stale-id fix, shipped additively) instead of only the storage id.
219
- # Fall back cleanly for storage types when the component is absent,
220
- # downlevel, or errors — the taxonomy lives in
221
- # ``_list_helpers_via_component``. The legacy body below is untouched.
222
- caps = await get_component_caps(self._client)
223
- if component_supports(caps, "helpers_list"):
224
- component_response = await self._list_helpers_via_component(
225
- helper_type, is_flow=is_flow
226
- )
227
- if component_response is not None:
228
- return _paginate_helpers_response(component_response, offset, limit)
229
- if is_flow:
230
- # No usable component path and the legacy body cannot serve flow
231
- # helpers: hard error rather than an empty or misleading list.
232
- _raise_flow_requires_component(helper_type)
233
215
  try:
216
+ # Prefer the custom component's in-process listing when it advertises
217
+ # the capability: one WS round-trip that joins the entity registry, so
218
+ # each record carries the current entity_id + display name (the #1794
219
+ # stale-id fix, shipped additively) instead of only the storage id.
220
+ # Fall back cleanly for storage types when the component is absent,
221
+ # downlevel, or errors — the taxonomy lives in
222
+ # ``_list_helpers_via_component``.
223
+ # Inside the ``try`` so an error the fallback re-raises reaches the
224
+ # structured-error handler below.
225
+ caps = await get_component_caps(self._client)
226
+ if component_supports(caps, "helpers_list"):
227
+ component_response = await self._list_helpers_via_component(
228
+ helper_type, is_flow=is_flow
229
+ )
230
+ if component_response is not None:
231
+ return _paginate_helpers_response(component_response, offset, limit)
232
+ if is_flow:
233
+ # No usable component path and the legacy body cannot serve flow
234
+ # helpers: hard error rather than an empty or misleading list.
235
+ _raise_flow_requires_component(helper_type)
234
236
  result = await self._client.send_websocket_message(
235
237
  {"type": f"{helper_type}/list"}
236
238
  )
@@ -297,8 +299,8 @@ class HelperConfigTools:
297
299
  for a storage type, serve the correct result from the legacy WS list,
298
300
  append a ``warnings[]`` entry, and ``log.warning``. For a flow type,
299
301
  raise the component-required error — no legacy fallback exists.
300
- - ``HomeAssistantConnectionError`` (pooled-WS drop) or the plain
301
- ``Exception`` ``get_websocket_client()`` raises on a failed (re)connect:
302
+ - ``HomeAssistantConnectionError`` (pooled-WS drop or a failed (re)connect
303
+ in ``get_websocket_client()``) or ``HomeAssistantAuthError`` (token rejected):
302
304
  for a storage type, the legacy ``{helper_type}/list`` body is attempted,
303
305
  with a ``warnings[]`` entry + ``log.warning``. It rides the
304
306
  ``send_websocket_message`` bridge over the SAME pooled connection
@@ -339,8 +341,9 @@ class HelperConfigTools:
339
341
  return legacy
340
342
  except Exception as exc:
341
343
  # Transport/establishment failure — a pooled-WS drop or a failed
342
- # (re)connect, both HomeAssistantConnectionError. A storage type
343
- # still attempts the legacy
344
+ # (re)connect (HomeAssistantConnectionError), a rejected token
345
+ # (HomeAssistantAuthError) or any other error. A storage type still
346
+ # attempts the legacy
344
347
  # `{helper_type}/list` body: it rides the same pooled connection, so it
345
348
  # recovers a component-side fault but not a dead socket, where the
346
349
  # bridge raises in turn (#1947). A flow type has NO legacy body, so its
@@ -318,7 +318,7 @@ async def _fetch_server_entry_via_component(client: Any) -> dict[str, Any] | Non
318
318
  logger.warning("%s failed; fell back to legacy: %r", WS_SERVER_ENTRY, exc)
319
319
  return None
320
320
  except Exception as exc: # noqa: BLE001
321
- # HomeAssistantConnectionError / plain establish Exception → legacy probe
321
+ # HomeAssistantConnectionError or any other error → legacy probe
322
322
  # (which rides the send_websocket_message bridge).
323
323
  logger.warning(
324
324
  "%s connection error; falling back to legacy: %r", WS_SERVER_ENTRY, exc
@@ -174,7 +174,7 @@ async def fetch_entity_enrichment_via_component(
174
174
  logger.warning("%s failed; skipped enrichment: %r", WS_ENTITY_ENRICH, exc)
175
175
  return None
176
176
  except Exception as exc: # noqa: BLE001
177
- # HomeAssistantConnectionError / plain establish Exception → skip
177
+ # HomeAssistantConnectionError or any other error → skip
178
178
  # enrichment (strictly additive; no legacy fetch dies here).
179
179
  logger.warning(
180
180
  "%s connection error; skipped enrichment: %r", WS_ENTITY_ENRICH, exc