ha-mcp-dev 9.1.0.dev3271__tar.gz → 9.1.0.dev3275__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.dev3271 → ha_mcp_dev-9.1.0.dev3275}/PKG-INFO +1 -1
  2. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/pyproject.toml +1 -1
  3. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/pyproject.toml.orig +1 -1
  4. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/rest_client.py +6 -6
  5. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/blueprint_sources.py +1 -1
  6. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_config_reads.py +7 -7
  7. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_devices.py +1 -1
  8. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_registry_lookup.py +2 -2
  9. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/log_sources_logbook.py +2 -5
  10. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/response_helpers.py +17 -0
  11. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/component.py +3 -1
  12. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/legacy.py +10 -10
  13. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/modes.py +1 -2
  14. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/overview.py +8 -7
  15. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/response.py +13 -13
  16. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/state.py +15 -15
  17. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_config_helpers.py +25 -22
  18. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_dev.py +1 -1
  19. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_entities.py +1 -1
  20. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_history.py +3 -3
  21. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_integrations.py +3 -3
  22. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_search.py +6 -6
  23. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_voice_assistant.py +1 -1
  24. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_zones.py +7 -6
  25. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/LICENSE +0 -0
  26. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/README.md +0 -0
  27. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/__init__.py +0 -0
  28. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/__main__.py +0 -0
  29. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_pypi_marker +0 -0
  30. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_rich_compat.py +0 -0
  31. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/__init__.py +0 -0
  32. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  33. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  34. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  35. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  36. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  37. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  38. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  39. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  40. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  41. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  42. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  43. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  44. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  45. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  46. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  47. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  48. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  49. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  50. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  51. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev_security.py +0 -0
  52. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  53. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  54. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  55. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  56. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  57. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  58. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  59. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  60. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  61. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  62. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  63. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  64. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  65. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  66. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  67. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  68. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  69. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  70. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  71. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  72. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  73. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  74. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  75. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  76. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  77. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  78. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  79. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  80. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  81. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  82. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  83. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  84. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  85. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  86. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  87. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  88. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  89. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  90. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  91. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  92. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  93. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/mixins/skills.py +0 -0
  94. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  95. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  96. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  97. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  98. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  99. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  100. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  101. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  102. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  103. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  104. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  105. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  106. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  107. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  108. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  109. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  110. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  111. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  112. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  113. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  114. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  115. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  116. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  117. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  118. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  119. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  120. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  121. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  122. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  123. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  124. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  125. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  126. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  127. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  128. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  129. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  130. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  131. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +0 -0
  132. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  133. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  134. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  135. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  136. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  137. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  138. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  139. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  140. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  141. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  142. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  143. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  144. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  145. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  146. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  147. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  148. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  149. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  150. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  151. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  152. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  153. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  154. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  155. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  156. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  157. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  158. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  159. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  160. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  161. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  162. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  163. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  164. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  165. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  166. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  167. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  168. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  169. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  170. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  171. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  172. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  173. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  174. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  175. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  176. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  177. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  178. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  179. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  180. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  181. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  182. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  183. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  184. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  185. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  186. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  187. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  188. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  189. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  190. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  191. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  192. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  193. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  194. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  195. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  196. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  197. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  198. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  199. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  200. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  201. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  202. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  203. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  204. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/mixins/extensions.py +0 -0
  205. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  206. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  207. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  208. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  209. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  210. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  211. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  212. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  213. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  214. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  215. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  216. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  217. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  218. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  219. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  220. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  221. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  222. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  223. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  224. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  225. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  226. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  227. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  228. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  229. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  230. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  231. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  232. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  233. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  234. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  235. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  236. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  237. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  238. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  239. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  240. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  241. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  242. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  243. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  244. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  245. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  246. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  247. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  248. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  249. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  250. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  251. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  252. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  253. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/__init__.py +0 -0
  254. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/_constants.py +0 -0
  255. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/_resources.py +0 -0
  256. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/_snapshot.py +0 -0
  257. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/_source.py +0 -0
  258. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/client.py +0 -0
  259. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/extension.py +0 -0
  260. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/models.py +0 -0
  261. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  262. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  263. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  264. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  265. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  266. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  267. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  268. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  269. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  270. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  271. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  272. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  273. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  274. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  275. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  276. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  277. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  278. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  279. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  280. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  281. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  282. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  283. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  284. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  285. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  286. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  287. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  288. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  289. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  290. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  291. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  292. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  293. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  294. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  295. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  296. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  297. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  298. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  299. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  300. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  301. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  302. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  303. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  304. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  305. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  306. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  307. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  308. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  309. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  310. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  311. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  312. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  313. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  314. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  315. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  316. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  317. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  318. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  319. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  320. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  321. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  322. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  323. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  324. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  325. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  326. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  327. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  328. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  329. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  330. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  331. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  332. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  333. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  334. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  335. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  336. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  337. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  338. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  339. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  340. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  341. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  342. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  343. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  344. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  345. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  346. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  347. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  348. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  349. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  350. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  351. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  352. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  353. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  354. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  355. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  356. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  357. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  358. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  359. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  360. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  361. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  362. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  363. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  364. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  365. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  366. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  367. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  368. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  369. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  370. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  371. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  372. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  373. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  374. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  375. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  376. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  377. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  378. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  379. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  380. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  381. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  382. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  383. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  384. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  385. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  386. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  387. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  388. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  389. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  390. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  391. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  392. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  393. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  394. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  395. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  396. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  397. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  398. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  399. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  400. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  401. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  402. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  403. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  404. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  405. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  406. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  407. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  408. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  409. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  410. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  411. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  412. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  413. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  414. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  415. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  416. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  417. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  418. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/_request_clock.py +0 -0
  419. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  420. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  421. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  422. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  423. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  424. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  425. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  426. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  427. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  428. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  429. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  430. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  431. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  432. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  433. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  434. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  435. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  436. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  437. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  438. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  439. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  440. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  441. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  442. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  443. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  444. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  445. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  446. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  447. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  448. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  449. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  450. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  451. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  452. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  453. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  454. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  455. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/requirements.txt +0 -0
  456. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  457. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  458. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  459. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  460. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  461. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  462. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  463. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  464. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  465. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  466. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  467. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  468. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  469. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  470. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  471. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  472. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  473. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  474. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  475. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  476. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  477. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  478. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  479. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  480. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  481. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  482. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  483. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  484. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  485. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  486. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  487. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  488. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  489. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  490. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  491. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  492. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  493. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  494. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  495. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  496. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  497. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  498. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  499. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  500. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  501. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  502. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  503. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  504. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  505. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  506. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  507. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  508. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  509. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  510. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  511. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  512. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_version.py +0 -0
  513. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/app_discovery.py +0 -0
  514. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/auth/__init__.py +0 -0
  515. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/auth/consent_form.py +0 -0
  516. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/auth/iss_stamp.py +0 -0
  517. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/auth/oidc_compat.py +0 -0
  518. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/auth/provider.py +0 -0
  519. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_dashboards.py +0 -0
  520. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_diff.py +0 -0
  521. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_entities.py +0 -0
  522. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_entity_ids.py +0 -0
  523. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_helper_target.py +0 -0
  524. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_integrations.py +0 -0
  525. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_manager.py +0 -0
  526. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_tags.py +0 -0
  527. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_todo.py +0 -0
  528. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_zones.py +0 -0
  529. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/browser_landing.py +0 -0
  530. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/__init__.py +0 -0
  531. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/admin_routes.py +0 -0
  532. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/error_log_journald.py +0 -0
  533. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/models.py +0 -0
  534. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/supervisor_client.py +0 -0
  535. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/websocket_client.py +0 -0
  536. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/websocket_listener.py +0 -0
  537. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/config.py +0 -0
  538. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/config_backup.py +0 -0
  539. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/config_meta.py +0 -0
  540. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/config_overrides.py +0 -0
  541. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/config_registry.py +0 -0
  542. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/config_settings.py +0 -0
  543. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  544. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  545. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  546. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/dashboard_screenshot/engine_compat.py +0 -0
  547. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  548. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  549. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  550. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/errors.py +0 -0
  551. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/ha_request_queue.py +0 -0
  552. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  553. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/http_transport.py +0 -0
  554. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/image_info.py +0 -0
  555. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/ipv6_lan_guard.py +0 -0
  556. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/listen_sockets.py +0 -0
  557. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/llm_exposure.py +0 -0
  558. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/log_filters.py +0 -0
  559. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/mcp_client_context.py +0 -0
  560. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/__init__.py +0 -0
  561. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/approval_queue.py +0 -0
  562. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/decision_pin.py +0 -0
  563. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/decisions.py +0 -0
  564. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/editing.py +0 -0
  565. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/evaluator.py +0 -0
  566. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/events.py +0 -0
  567. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/handlers.py +0 -0
  568. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/middleware.py +0 -0
  569. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/model.py +0 -0
  570. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/mrtr.py +0 -0
  571. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/persistence.py +0 -0
  572. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/server_channels.py +0 -0
  573. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/value_sources.py +0 -0
  574. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/py.typed +0 -0
  575. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/read_only.py +0 -0
  576. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/redaction.py +0 -0
  577. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/renamed_tools.py +0 -0
  578. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  579. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  580. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  581. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
  582. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  583. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  584. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  585. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  586. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  587. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  588. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  589. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  590. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  591. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  592. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  593. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
  594. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  595. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/server.py +0 -0
  596. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/server_instructions.py +0 -0
  597. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/server_lifespan.py +0 -0
  598. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/server_tool_text.py +0 -0
  599. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/__init__.py +0 -0
  600. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  601. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  602. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  603. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_handlers_oauth_callbacks.py +0 -0
  604. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  605. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  606. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  607. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  608. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  609. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  610. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  611. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_theme.py +0 -0
  612. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  613. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  614. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  615. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  616. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  617. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  618. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  619. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  620. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  621. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  622. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  623. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  624. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  625. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  626. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  627. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  628. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  629. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  630. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings.css +0 -0
  631. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings.html +0 -0
  632. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
  633. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
  634. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
  635. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
  636. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
  637. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
  638. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
  639. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
  640. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
  641. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/10_oauth_callbacks.js +0 -0
  642. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/smoke_test.py +0 -0
  643. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  644. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/storage_helper_types.py +0 -0
  645. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/strict_bps.py +0 -0
  646. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tool_dispatch.py +0 -0
  647. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/__init__.py +0 -0
  648. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/addon_connection_hints.py +0 -0
  649. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/area_messages.py +0 -0
  650. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/auto_backup.py +0 -0
  651. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/backup.py +0 -0
  652. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/backup_access.py +0 -0
  653. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/backup_on_demand.py +0 -0
  654. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/backup_snapshot.py +0 -0
  655. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/backup_snapshot_restore.py +0 -0
  656. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  657. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/best_practice_result.py +0 -0
  658. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  659. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  660. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/blueprint_write.py +0 -0
  661. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/bug_report_config.py +0 -0
  662. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/bug_report_redaction.py +0 -0
  663. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/bug_report_sources.py +0 -0
  664. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/bug_report_templates.py +0 -0
  665. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/bulk_selector.py +0 -0
  666. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/coercion.py +0 -0
  667. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_api.py +0 -0
  668. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_config_entries.py +0 -0
  669. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  670. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_helper_collections.py +0 -0
  671. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_registries.py +0 -0
  672. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_todo.py +0 -0
  673. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_backup.py +0 -0
  674. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  675. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  676. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
  677. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  678. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  679. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  680. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
  681. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  682. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_file_visibility.py +0 -0
  683. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
  684. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
  685. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/create.py +0 -0
  686. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
  687. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
  688. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/icon_route.py +0 -0
  689. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
  690. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
  691. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
  692. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
  693. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/update.py +0 -0
  694. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
  695. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
  696. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_write_errors.py +0 -0
  697. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_write_helpers.py +0 -0
  698. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/core_contract.py +0 -0
  699. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/dashboard_card_describe.py +0 -0
  700. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  701. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
  702. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/dashboard_read_errors.py +0 -0
  703. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/dev_backup.py +0 -0
  704. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/device_control.py +0 -0
  705. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/device_enrichment.py +0 -0
  706. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
  707. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/energy_preferences.py +0 -0
  708. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/entity_expose_batch.py +0 -0
  709. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
  710. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/entity_registration.py +0 -0
  711. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/entity_removal.py +0 -0
  712. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/entity_update_fields.py +0 -0
  713. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  714. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/flow_helper_lookup.py +0 -0
  715. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/hacs_backend.py +0 -0
  716. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/hacs_registration.py +0 -0
  717. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/helper_flows.py +0 -0
  718. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/helpers.py +0 -0
  719. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/history_response.py +0 -0
  720. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/integration_entry_state.py +0 -0
  721. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
  722. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/log_common.py +0 -0
  723. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/log_sources.py +0 -0
  724. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  725. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  726. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/radio/__init__.py +0 -0
  727. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/radio/base.py +0 -0
  728. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/radio/matter.py +0 -0
  729. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/radio/thread.py +0 -0
  730. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  731. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/radio/zwave.py +0 -0
  732. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
  733. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/recorder_errors.py +0 -0
  734. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/reference_validator.py +0 -0
  735. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/registry.py +0 -0
  736. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  737. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/scene_discovery.py +0 -0
  738. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/__init__.py +0 -0
  739. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/base.py +0 -0
  740. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/entities.py +0 -0
  741. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/server_version.py +0 -0
  742. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  743. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  744. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  745. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  746. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  747. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  748. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  749. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  750. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  751. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  752. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/statistics_calendar.py +0 -0
  753. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/statistics_helpers.py +0 -0
  754. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/statistics_resets.py +0 -0
  755. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/system_restart.py +0 -0
  756. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tool_hints.py +0 -0
  757. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  758. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_addons.py +0 -0
  759. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_areas.py +0 -0
  760. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  761. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  762. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  763. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_calendar.py +0 -0
  764. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_camera.py +0 -0
  765. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_categories.py +0 -0
  766. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_code.py +0 -0
  767. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  768. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  769. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  770. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  771. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  772. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_energy.py +0 -0
  773. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  774. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_groups.py +0 -0
  775. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_hacs.py +0 -0
  776. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_labels.py +0 -0
  777. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_logs.py +0 -0
  778. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_radio.py +0 -0
  779. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_registry.py +0 -0
  780. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_resources.py +0 -0
  781. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  782. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_service.py +0 -0
  783. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_services.py +0 -0
  784. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_system.py +0 -0
  785. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_themes.py +0 -0
  786. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_todo.py +0 -0
  787. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_traces.py +0 -0
  788. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_updates.py +0 -0
  789. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_utility.py +0 -0
  790. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  791. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  792. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/update_categories.py +0 -0
  793. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/util_helpers.py +0 -0
  794. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/validation_middleware.py +0 -0
  795. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/ws_waiters.py +0 -0
  796. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transforms/__init__.py +0 -0
  797. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transforms/categorized_search.py +0 -0
  798. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transforms/compact_params.py +0 -0
  799. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transforms/component_helpers.py +0 -0
  800. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transforms/component_search.py +0 -0
  801. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  802. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  803. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transport_security.py +0 -0
  804. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/update_check.py +0 -0
  805. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/__init__.py +0 -0
  806. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/config_hash.py +0 -0
  807. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/config_write_lock.py +0 -0
  808. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  809. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/data_paths.py +0 -0
  810. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  811. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/domain_handlers.py +0 -0
  812. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/entity_membership.py +0 -0
  813. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  814. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  815. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  816. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/operation_manager.py +0 -0
  817. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/python_sandbox.py +0 -0
  818. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  819. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/skill_loader.py +0 -0
  820. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/usage_logger.py +0 -0
  821. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/visibility/__init__.py +0 -0
  822. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/visibility/config_files.py +0 -0
  823. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/visibility/enforcement.py +0 -0
  824. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/visibility/identifier_aliases.py +0 -0
  825. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/visibility/model.py +0 -0
  826. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/visibility/persistence.py +0 -0
  827. {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/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.dev3271
3
+ Version: 9.1.0.dev3275
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.dev3271"
7
+ version = "9.1.0.dev3275"
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.dev3271"
7
+ version = "9.1.0.dev3275"
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
@@ -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
@@ -502,8 +502,8 @@ class HistoryTools:
502
502
  message="recorder query complete",
503
503
  )
504
504
  # Wrap first so the outer {"data": ..., "metadata": ...} shape
505
- # is always present; then project the inner data dict in-place
506
- # when caller requested field projection.
505
+ # is always present; then project the inner data dict and lift
506
+ # the typo warning project_fields may add to it.
507
507
  _r = await add_timezone_metadata(
508
508
  self._client, inner, convert_timestamps=False
509
509
  )
@@ -980,7 +980,7 @@ async def _fetch_history(
980
980
  "summary": summary_until is not None,
981
981
  },
982
982
  }
983
- if summary_until is not None: # ha_get_history drops an empty list
983
+ if summary_until is not None: # add_timezone_metadata drops an empty list
984
984
  history_data["warnings"] = summary_warnings(result_data, summaries, start_ts)
985
985
 
986
986
  return history_data
@@ -354,9 +354,9 @@ async def _fetch_entries_via_component(
354
354
  return None
355
355
  except Exception as exc: # noqa: BLE001
356
356
  # DEVIATION (see docstring): the legacy path is pure REST / the REST-client
357
- # WS bridge, NOT the shared pooled WS. A pooled-WS drop
358
- # (HomeAssistantConnectionError) OR get_websocket_client() raising a plain
359
- # Exception when WebSocketManager can't (re)connect must fall back to legacy
357
+ # WS bridge, NOT the shared pooled WS. A pooled-WS drop or a failed
358
+ # (re)connect (HomeAssistantConnectionError), a rejected token
359
+ # (HomeAssistantAuthError) or any other error must fall back to legacy
360
360
  # rather than kill the tool.
361
361
  logger.warning(
362
362
  "%s connection error; falling back to legacy: %r",
@@ -37,6 +37,7 @@ from .search.overview import (
37
37
  )
38
38
  from .search.response import (
39
39
  _compute_eligibility,
40
+ _omit_empty_warnings,
40
41
  _ResolvedSearch,
41
42
  _validate_search_types,
42
43
  )
@@ -417,9 +418,9 @@ class SearchTools(ComponentSearchMixin, OverviewMixin, StateMixin):
417
418
  req, ctx, visibility=visibility, caps=caps
418
419
  )
419
420
  if component_response is not None:
420
- return component_response
421
+ return _omit_empty_warnings(component_response)
421
422
 
422
- return await self._legacy_ha_search(req, ctx)
423
+ return _omit_empty_warnings(await self._legacy_ha_search(req, ctx))
423
424
 
424
425
  @tool(
425
426
  name="ha_get_overview",
@@ -759,10 +760,9 @@ class SearchTools(ComponentSearchMixin, OverviewMixin, StateMixin):
759
760
  preserved. `attribute_keys=` further narrows the `attributes` sub-dict
760
761
  and is only applied when `"attributes"` is in `fields=` (or
761
762
  `fields=None`); otherwise it is a no-op and a `warnings` list is emitted
762
- outside the projected record(s) — at the response wrapper level in bulk
763
- mode, at the top-level result (sibling of `data`/`metadata`) in
764
- single-entity mode — so `fields=["state"]` still returns a record with
765
- only `state`.
763
+ at the top level of the result (sibling of `data`/`metadata`), outside
764
+ the projected record(s), so `fields=["state"]` still returns a record
765
+ with only `state`.
766
766
 
767
767
  EXAMPLES:
768
768
  - Single: ha_get_state("light.kitchen")
@@ -114,7 +114,7 @@ class VoiceAssistantTools:
114
114
  logger.warning("%s failed; fell back to legacy: %r", WS_EXPOSURE, exc)
115
115
  return None
116
116
  except Exception as exc: # noqa: BLE001
117
- # HomeAssistantConnectionError / plain establish Exception → legacy (the
117
+ # HomeAssistantConnectionError or any other error → legacy (the
118
118
  # legacy expose_entity/list read rides the bridge).
119
119
  logger.warning(
120
120
  "%s connection error; falling back to legacy: %r", WS_EXPOSURE, exc
@@ -237,12 +237,13 @@ class ZoneTools:
237
237
  entry, and ``log.warning``.
238
238
  - a response that does not authoritatively enumerate ``zone`` (an older
239
239
  component with no ``covered_types``): fall back to legacy silently.
240
- - ``HomeAssistantConnectionError`` (pooled-WS drop) or the plain
241
- ``Exception`` ``get_websocket_client()`` raises on a failed (re)connect:
242
- served from the legacy listing (its reads ride the swallowing
243
- ``send_websocket_message`` bridge, so a transport failure surfaces
244
- there as a structured error or a listing gap rather than dying
245
- identically), with a ``warnings[]`` entry + ``log.warning``.
240
+ - ``HomeAssistantConnectionError`` (pooled-WS drop or a failed (re)connect
241
+ in ``get_websocket_client()``): served from the legacy listing (its
242
+ reads ride the ``send_websocket_message`` bridge, so a transport
243
+ failure surfaces there as a structured error or a listing gap rather
244
+ than dying identically), with a ``warnings[]`` entry + ``log.warning``.
245
+ A token HA rejects (``HomeAssistantAuthError``) takes this branch too,
246
+ but the legacy reads use the same token and fail with it.
246
247
  """
247
248
  try:
248
249
  raw = await self._send_component_zone_list()