ha-mcp-dev 8.5.0.dev2757__tar.gz → 8.5.0.dev2759__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.

Potentially problematic release.


This version of ha-mcp-dev might be problematic. Click here for more details.

Files changed (735) hide show
  1. {ha_mcp_dev-8.5.0.dev2757/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.5.0.dev2759}/PKG-INFO +1 -1
  2. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/pyproject.toml +1 -1
  3. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/backup_manager.py +9 -3
  4. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/server.py +5 -4
  5. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/device_control.py +10 -10
  6. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/smart_search/_entities.py +1 -2
  7. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_calendar.py +6 -3
  8. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_config_automations.py +1 -1
  9. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_config_dashboards.py +3 -3
  10. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_config_helpers.py +2 -2
  11. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_config_scenes.py +5 -1
  12. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_config_scripts.py +1 -1
  13. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_filesystem.py +7 -4
  14. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_registry.py +5 -3
  15. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_service.py +71 -12
  16. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_system.py +3 -7
  17. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_traces.py +4 -3
  18. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_yaml_config.py +4 -3
  19. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
  20. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/LICENSE +0 -0
  21. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/MANIFEST.in +0 -0
  22. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/README.md +0 -0
  23. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/setup.cfg +0 -0
  24. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/__init__.py +0 -0
  25. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/__main__.py +0 -0
  26. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_pypi_marker +0 -0
  27. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_rich_compat.py +0 -0
  28. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/__init__.py +0 -0
  29. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  30. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  31. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  32. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  33. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  34. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  35. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  36. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  37. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  38. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  39. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  40. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  41. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  42. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  43. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  44. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  45. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  46. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  47. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  48. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  49. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  50. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  51. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  52. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  53. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  54. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  55. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  56. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  57. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  58. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  59. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  60. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  61. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  62. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  63. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  64. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  65. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  66. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  67. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  68. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  69. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  70. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  71. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  72. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  73. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  74. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  75. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  76. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  77. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  78. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  79. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  80. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  81. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  82. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  83. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  84. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  85. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  86. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  87. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  88. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  89. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  90. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  91. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  92. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  93. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  94. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  95. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  96. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  97. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  98. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  99. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  100. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  101. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  102. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  103. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  104. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  105. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  106. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  107. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  108. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  109. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  110. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  111. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  112. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  113. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  114. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  115. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  116. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  117. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  118. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  119. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  120. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  121. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  122. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  123. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  124. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  125. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  126. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  127. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  128. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  129. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  130. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  131. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  132. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  133. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  134. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  135. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  136. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  137. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  138. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  139. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  140. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  141. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  142. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  143. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  144. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  145. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  146. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  147. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  148. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  149. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  150. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  151. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  152. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  153. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  154. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  155. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  156. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  157. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  158. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  159. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  160. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  161. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  162. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  163. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  164. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  165. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  166. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  167. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  168. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  169. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  170. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  171. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  172. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  173. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  174. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  175. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  176. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  177. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  178. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  179. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  180. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  181. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  182. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  183. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  184. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  185. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  186. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  187. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  188. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  189. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  190. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  191. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  192. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  193. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  194. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  195. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  196. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  197. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  198. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  199. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  200. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  201. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  202. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  203. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  204. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  205. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  206. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  207. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  208. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  209. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  210. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  211. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  212. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  213. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  214. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  215. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  216. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  217. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  218. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  219. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  220. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  221. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  222. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  223. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  224. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  225. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  226. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  227. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  228. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  229. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  230. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  231. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  232. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  233. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  234. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  235. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  236. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  237. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  238. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  239. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  240. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  241. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  242. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  243. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  244. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  245. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  246. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  247. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  248. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  249. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  250. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  251. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  252. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  253. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  254. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  255. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  256. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  257. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  258. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  259. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  260. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  261. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  262. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  263. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  264. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  265. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  266. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  267. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  268. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  269. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  270. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  271. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  272. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  273. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  274. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  275. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  276. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  277. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  278. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  279. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  280. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  281. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  282. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  283. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  284. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  285. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  286. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  287. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  288. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  289. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  290. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  291. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  292. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  293. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  294. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  295. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  296. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  297. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  298. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  299. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  300. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  301. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  302. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  303. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  304. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  305. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  306. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  307. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  308. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  309. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  310. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  311. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  312. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  313. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  314. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  315. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  316. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  317. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  318. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  319. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  320. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  321. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  322. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  323. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  324. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  325. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  326. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  327. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  328. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  329. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  330. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  331. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  332. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  333. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  334. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  335. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  336. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  337. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  338. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  339. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  340. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  341. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  342. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  343. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  344. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  345. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  346. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  347. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  348. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  349. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  350. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  351. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  352. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  353. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  354. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  355. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  356. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  357. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  358. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  359. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  360. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  361. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  362. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  363. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  364. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  365. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  366. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  367. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  368. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  369. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  370. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  371. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  372. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  373. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  374. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  375. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  376. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  377. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  378. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  379. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  380. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  381. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  382. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  383. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  384. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  385. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  386. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  387. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  388. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  389. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  390. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  391. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  392. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  393. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  394. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  395. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  396. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  397. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  398. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  399. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  400. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  401. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  402. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  403. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  404. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  405. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  406. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  407. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  408. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  409. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  410. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  411. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  412. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  413. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  414. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  415. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  416. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  417. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  418. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  419. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  420. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  421. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  422. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  423. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  424. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  425. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  426. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  427. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  428. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  429. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  430. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  431. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  432. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  433. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  434. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  435. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  436. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  437. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  438. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  439. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/requirements.txt +0 -0
  440. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  441. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  442. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  443. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  444. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  445. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  446. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  447. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  448. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  449. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  450. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  451. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  452. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  453. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  454. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  455. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  456. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  457. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  458. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  459. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  460. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  461. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  462. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  463. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  464. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  465. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  466. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  467. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  468. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  469. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  470. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  471. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  472. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  473. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  474. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  475. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  476. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  477. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  478. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  479. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  480. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  481. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  482. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  483. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  484. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  485. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  486. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  487. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  488. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  489. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  490. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  491. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  492. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  493. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  494. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  495. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  496. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/_version.py +0 -0
  497. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/auth/__init__.py +0 -0
  498. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/auth/consent_form.py +0 -0
  499. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/auth/oidc_compat.py +0 -0
  500. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/auth/provider.py +0 -0
  501. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/browser_landing.py +0 -0
  502. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/client/__init__.py +0 -0
  503. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/client/rest_client.py +0 -0
  504. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/client/supervisor_client.py +0 -0
  505. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/client/websocket_client.py +0 -0
  506. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/client/websocket_listener.py +0 -0
  507. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/config.py +0 -0
  508. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  509. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  510. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  511. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  512. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  513. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  514. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/errors.py +0 -0
  515. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/ha_request_queue.py +0 -0
  516. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  517. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/http_transport.py +0 -0
  518. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/llm_exposure.py +0 -0
  519. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/log_filters.py +0 -0
  520. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/policy/__init__.py +0 -0
  521. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/policy/approval_queue.py +0 -0
  522. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/policy/decision_pin.py +0 -0
  523. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/policy/decisions.py +0 -0
  524. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/policy/editing.py +0 -0
  525. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/policy/evaluator.py +0 -0
  526. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/policy/events.py +0 -0
  527. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/policy/handlers.py +0 -0
  528. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/policy/middleware.py +0 -0
  529. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/policy/model.py +0 -0
  530. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/policy/persistence.py +0 -0
  531. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/policy/value_sources.py +0 -0
  532. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/py.typed +0 -0
  533. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/read_only.py +0 -0
  534. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/redaction.py +0 -0
  535. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/renamed_tools.py +0 -0
  536. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
  537. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
  538. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
  539. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
  540. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
  541. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
  542. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
  543. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
  544. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  545. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
  546. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/evals/area-target-over-entity-list/case.yaml +0 -0
  547. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/evals/arrive-home-automation/case.yaml +0 -0
  548. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/evals/assist-shortcut-card/case.yaml +0 -0
  549. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/evals/avg-temperature/case.yaml +0 -0
  550. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/evals/backup-deletion-confirmation/case.yaml +0 -0
  551. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/evals/blueprint-authoring/case.yaml +0 -0
  552. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/evals/button-event-entity/case.yaml +0 -0
  553. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/evals/device-id-trigger-migration/case.yaml +0 -0
  554. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/evals/helper-flow-fields-not-platform-yaml/case.yaml +0 -0
  555. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/evals/media-player-song/case.yaml +0 -0
  556. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/evals/motion-light-automation-mode/case.yaml +0 -0
  557. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/evals/rename-entity-impact-analysis/case.yaml +0 -0
  558. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/evals/template-attributes-yaml-exception/case.yaml +0 -0
  559. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/evals/timer-finished-automation/case.yaml +0 -0
  560. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/evals/vacuum-last-clean/case.yaml +0 -0
  561. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/scripts/check_eval_cases.py +0 -0
  562. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  563. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  564. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
  565. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  566. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  567. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  568. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  569. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  570. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  571. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  572. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  573. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  574. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  575. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  576. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  577. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/__init__.py +0 -0
  578. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  579. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  580. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  581. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  582. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  583. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  584. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  585. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  586. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  587. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  588. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/_theme.py +0 -0
  589. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  590. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  591. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  592. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  593. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  594. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  595. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  596. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  597. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  598. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  599. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  600. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  601. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  602. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  603. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  604. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  605. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  606. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  607. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/settings.css +0 -0
  608. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/settings.html +0 -0
  609. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/settings_ui/settings.js +0 -0
  610. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/smoke_test.py +0 -0
  611. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  612. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/strict_bps.py +0 -0
  613. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tool_dispatch.py +0 -0
  614. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/__init__.py +0 -0
  615. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/auto_backup.py +0 -0
  616. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/backup.py +0 -0
  617. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  618. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/best_practice_result.py +0 -0
  619. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  620. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  621. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  622. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/blueprint_write.py +0 -0
  623. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/bulk_selector.py +0 -0
  624. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/component_api.py +0 -0
  625. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/component_config_entries.py +0 -0
  626. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/component_config_reads.py +0 -0
  627. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  628. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/component_devices.py +0 -0
  629. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/component_registries.py +0 -0
  630. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  631. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  632. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  633. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  634. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  635. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  636. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
  637. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  638. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  639. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/entity_registration.py +0 -0
  640. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  641. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/hacs_registration.py +0 -0
  642. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/helpers.py +0 -0
  643. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
  644. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/log_common.py +0 -0
  645. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/log_sources.py +0 -0
  646. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  647. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  648. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/radio/__init__.py +0 -0
  649. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/radio/base.py +0 -0
  650. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/radio/matter.py +0 -0
  651. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/radio/thread.py +0 -0
  652. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  653. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/radio/zwave.py +0 -0
  654. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/reference_validator.py +0 -0
  655. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/registry.py +0 -0
  656. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  657. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/scene_discovery.py +0 -0
  658. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  659. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  660. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  661. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  662. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  663. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  664. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  665. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  666. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  667. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  668. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_addons.py +0 -0
  669. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_areas.py +0 -0
  670. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  671. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  672. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  673. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_camera.py +0 -0
  674. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_categories.py +0 -0
  675. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_code.py +0 -0
  676. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  677. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_dev.py +0 -0
  678. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_energy.py +0 -0
  679. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_entities.py +0 -0
  680. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_groups.py +0 -0
  681. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_hacs.py +0 -0
  682. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_history.py +0 -0
  683. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_integrations.py +0 -0
  684. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_labels.py +0 -0
  685. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_logs.py +0 -0
  686. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_radio.py +0 -0
  687. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_resources.py +0 -0
  688. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_search.py +0 -0
  689. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  690. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_services.py +0 -0
  691. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_themes.py +0 -0
  692. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_todo.py +0 -0
  693. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_updates.py +0 -0
  694. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_utility.py +0 -0
  695. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  696. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  697. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/tools_zones.py +0 -0
  698. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/util_helpers.py +0 -0
  699. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/tools/validation_middleware.py +0 -0
  700. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/transforms/__init__.py +0 -0
  701. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/transforms/categorized_search.py +0 -0
  702. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/transforms/component_search.py +0 -0
  703. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  704. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  705. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/transport_security.py +0 -0
  706. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/update_check.py +0 -0
  707. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/__init__.py +0 -0
  708. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/config_hash.py +0 -0
  709. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/config_write_lock.py +0 -0
  710. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  711. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/data_paths.py +0 -0
  712. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  713. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/domain_handlers.py +0 -0
  714. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/entity_membership.py +0 -0
  715. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  716. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  717. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  718. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/operation_manager.py +0 -0
  719. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/python_sandbox.py +0 -0
  720. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  721. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/skill_loader.py +0 -0
  722. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/utils/usage_logger.py +0 -0
  723. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/visibility/__init__.py +0 -0
  724. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/visibility/enforcement.py +0 -0
  725. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/visibility/model.py +0 -0
  726. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/visibility/persistence.py +0 -0
  727. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp/visibility/resolver.py +0 -0
  728. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
  729. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
  730. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
  731. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
  732. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
  733. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/tests/__init__.py +0 -0
  734. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/tests/test_constants.py +0 -0
  735. {ha_mcp_dev-8.5.0.dev2757 → ha_mcp_dev-8.5.0.dev2759}/tests/test_env_manager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 8.5.0.dev2757
3
+ Version: 8.5.0.dev2759
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Author-email: Julien <github@qc-h.net>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "8.5.0.dev2757"
7
+ version = "8.5.0.dev2759"
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
@@ -3061,8 +3061,10 @@ async def _fetch_file(client: Any, entity_id: str) -> Any:
3061
3061
 
3062
3062
  ``entity_id`` is the file path. Returns the content string, or None
3063
3063
  when the file does not exist — a brand-new write has no prior content
3064
- to snapshot, so capture skips (same as creating a new entity). Other
3065
- read failures raise so the capture pipeline logs them at WARNING.
3064
+ to snapshot, so capture skips (same as creating a new entity). A
3065
+ binary file also returns None: snapshots store text only, so capture
3066
+ skips it instead of blocking the write or delete. Other read failures
3067
+ raise so the capture pipeline logs them at WARNING.
3066
3068
  """
3067
3069
  from .tools.tools_filesystem import call_mcp_tools_service
3068
3070
  from .tools.util_helpers import unwrap_service_response
@@ -3075,7 +3077,11 @@ async def _fetch_file(client: Any, entity_id: str) -> Any:
3075
3077
  content = result.get("content")
3076
3078
  return content if isinstance(content, str) else None
3077
3079
  error = str(result.get("error", ""))
3078
- if "does not exist" in error or "not a file" in error:
3080
+ if (
3081
+ "does not exist" in error
3082
+ or "not a file" in error
3083
+ or "Cannot read binary file" in error
3084
+ ):
3079
3085
  return None
3080
3086
  raise HomeAssistantError(f"read_file failed for {entity_id!r}: {error}")
3081
3087
 
@@ -873,8 +873,8 @@ class HomeAssistantSmartMCPServer:
873
873
  "see ha_get_skill_guide."
874
874
  ),
875
875
  "ha_config_set_yaml": (
876
- "Update raw YAML in configuration.yaml or packages/*.yaml "
877
- "via add / replace / remove on a single top-level key "
876
+ "Update raw YAML in configuration.yaml, packages/*.yaml or "
877
+ "themes/*.yaml via add / replace / remove on a single top-level key "
878
878
  "(LAST RESORT). By default the first call returns a diff "
879
879
  "preview plus confirm_token; repeat with confirm_token to "
880
880
  "apply.\n\n"
@@ -884,8 +884,9 @@ class HomeAssistantSmartMCPServer:
884
884
  "should be preferred. Use this only for YAML-only "
885
885
  "integrations (command_line, rest, shell_command, notify), "
886
886
  "YAML-heavy integrations like knx (in packages/*.yaml), "
887
- "or registering YAML-mode dashboards via "
888
- "`lovelace.dashboards.<url_path>`. Most edits require a "
887
+ "registering YAML-mode dashboards via "
888
+ "`lovelace.dashboards.<url_path>`, or editing theme files in "
889
+ "themes/*.yaml (reloaded automatically). Most edits require a "
889
890
  "full HA restart; template, mqtt, and group support "
890
891
  "reload.\n\n"
891
892
  "For routing guidance and the full allowlist, see "
@@ -137,7 +137,7 @@ class DeviceControlTools:
137
137
  f"Invalid entity ID format: {entity_id}",
138
138
  suggestions=[
139
139
  "Entity ID must be in format 'domain.entity_name'",
140
- "Use smart_entity_search to find correct entity ID",
140
+ "Use ha_search to find the correct entity ID",
141
141
  ],
142
142
  context={"entity_id": entity_id, "action": action},
143
143
  )
@@ -211,12 +211,12 @@ class DeviceControlTools:
211
211
  "command_sent": True,
212
212
  "operation_id": operation_id,
213
213
  "status": "pending_verification",
214
- "message": f"Command sent to {entity_id}. Use get_device_operation_status() to verify completion.",
214
+ "message": f"Command sent to {entity_id}. Use ha_get_operation_status to verify completion.",
215
215
  "service_call": service_call,
216
216
  "expected_state": expected_state,
217
217
  "timeout_seconds": timeout_seconds,
218
218
  "follow_up": {
219
- "tool": "get_device_operation_status",
219
+ "tool": "ha_get_operation_status",
220
220
  "parameters": {
221
221
  "operation_id": operation_id,
222
222
  "timeout_seconds": timeout_seconds,
@@ -292,7 +292,7 @@ class DeviceControlTools:
292
292
  ErrorCode.ENTITY_NOT_FOUND,
293
293
  f"Entity not found: {entity_id}",
294
294
  suggestions=[
295
- "Use smart_entity_search to find the correct entity",
295
+ "Use ha_search to find the correct entity",
296
296
  "Check entity is not disabled in Home Assistant",
297
297
  ],
298
298
  context={"entity_id": entity_id, "action": action},
@@ -509,7 +509,7 @@ class DeviceControlTools:
509
509
  suggestions=[
510
510
  "Operation may have been cleaned up after completion",
511
511
  "Check operation ID spelling",
512
- "Use control_device_smart to start new operation",
512
+ "Use ha_bulk_control to start a new operation",
513
513
  ],
514
514
  context={"operation_id": operation_id},
515
515
  )
@@ -535,7 +535,7 @@ class DeviceControlTools:
535
535
  suggestions=[
536
536
  "Operation may have completed and been purged before "
537
537
  + "verification finished",
538
- "Use control_device_smart to start new operation",
538
+ "Use ha_bulk_control to start a new operation",
539
539
  ],
540
540
  context={"operation_id": operation_id},
541
541
  )
@@ -620,7 +620,7 @@ class DeviceControlTools:
620
620
  "tips": [
621
621
  "Operation will auto-complete when device state changes",
622
622
  "Physical devices may take 1-3 seconds to respond",
623
- "Call this function again to check for updates",
623
+ "Call ha_get_operation_status again to check for updates",
624
624
  ],
625
625
  }
626
626
 
@@ -935,7 +935,7 @@ class DeviceControlTools:
935
935
  total=len(valid_operations),
936
936
  message=(
937
937
  f"dispatched {len(operation_ids)} op(s); "
938
- "use get_bulk_operation_status to verify completion"
938
+ "use ha_get_operation_status to verify completion"
939
939
  ),
940
940
  )
941
941
 
@@ -1539,7 +1539,7 @@ class DeviceControlTools:
1539
1539
  "follow_up": (
1540
1540
  {
1541
1541
  "message": (
1542
- f"Use get_bulk_operation_status() to check all "
1542
+ f"Use ha_get_operation_status(operation_id=[...]) to check all "
1543
1543
  f"{len(operation_ids)} operations"
1544
1544
  ),
1545
1545
  "operation_ids": operation_ids,
@@ -1587,7 +1587,7 @@ class DeviceControlTools:
1587
1587
  ErrorCode.VALIDATION_MISSING_PARAMETER,
1588
1588
  "No operation IDs provided",
1589
1589
  suggestions=[
1590
- "Provide a list of operation IDs from control_device_smart"
1590
+ "Provide the operation_ids that ha_bulk_control returned"
1591
1591
  ],
1592
1592
  )
1593
1593
  )
@@ -601,8 +601,7 @@ class EntitySearchMixin(_SearchBase):
601
601
  e,
602
602
  suggestions=[
603
603
  "Check Home Assistant connection",
604
- "Try common room names: salon, chambre, cuisine",
605
- "Use smart_entity_search to find entities first",
604
+ "Use ha_search to find entities first",
606
605
  ],
607
606
  context={"area_query": area_query},
608
607
  )
@@ -182,7 +182,8 @@ class CalendarTools:
182
182
  end: Annotated[
183
183
  str | None,
184
184
  Field(
185
- description="End datetime in ISO format (default: 7 days from start)",
185
+ description="End datetime in ISO format (default: 7 days from now, "
186
+ "not from start; pass end whenever you pass start)",
186
187
  default=None,
187
188
  ),
188
189
  ] = None,
@@ -193,8 +194,10 @@ class CalendarTools:
193
194
  ) -> dict[str, Any]:
194
195
  """Get calendar events from a calendar entity within a time range.
195
196
 
196
- Returns each event's summary, start, end, description and location. To
197
- find calendar entities, use ha_search(domain_filter='calendar').
197
+ Returns each event's summary, start, end, description and location,
198
+ plus the uid, recurrence_id and rrule when the calendar provides them
199
+ (the edit and remove tools use uid and recurrence_id). To find calendar
200
+ entities, use ha_search(domain_filter='calendar').
198
201
 
199
202
  EXAMPLES:
200
203
  - Next week (defaults): ha_config_get_calendar_events("calendar.family")
@@ -562,7 +562,7 @@ class AutomationConfigTools:
562
562
 
563
563
  Returns the complete configuration including triggers, conditions, actions, and mode settings.
564
564
 
565
- The returned `config_hash` is stable across consecutive reads of an unchanged config — `compute_config_hash` documents the underlying contract.
565
+ The returned `config_hash` stays the same across consecutive reads of an unchanged config.
566
566
 
567
567
  The returned `automation_id` is the resolved entity_id (canonical
568
568
  form, e.g. `automation.morning_routine`) when the registry lookup
@@ -1922,7 +1922,7 @@ class DashboardConfigTools:
1922
1922
  On installs without the ha_mcp_tools component, the default (unnamed)
1923
1923
  dashboard is also not searched — only dashboards with a url_path are.
1924
1924
 
1925
- Return a stable `config_hash` (Get and Search modes only; not present in list_only mode) across consecutive reads of an unchanged config — `compute_config_hash` documents the underlying contract.
1925
+ MODE 2 (Search) and MODE 3 (Get) return a `config_hash` that stays the same across consecutive reads of an unchanged config; MODE 1 and MODE 4 do not return one.
1926
1926
 
1927
1927
  EXAMPLES:
1928
1928
  - List all dashboards: ha_config_get_dashboard(list_only=True)
@@ -2852,8 +2852,8 @@ class DashboardConfigTools:
2852
2852
 
2853
2853
  Use ha_config_get_dashboard(entity_id=...) to get the path of any card,
2854
2854
  and ha_search / ha_get_overview to find entity IDs — never guess them.
2855
- For visual re-checks after the write use ha_get_dashboard_screenshot
2856
- instead of re-sending config.
2855
+ For visual re-checks after the write, use ha_get_dashboard_screenshot
2856
+ (when available) instead of re-sending config.
2857
2857
 
2858
2858
  title/icon/require_admin/show_in_sidebar can be updated in a
2859
2859
  metadata-only call or alongside a full config replacement; with
@@ -4422,8 +4422,8 @@ class HelperConfigTools:
4422
4422
  "Ignored for helper_type='config_subentry', which uses "
4423
4423
  "entry_id/subentry_type/subentry_id instead. For flow-based "
4424
4424
  "helper updates (template, group, utility_meter, ...), this is "
4425
- "typically ignored because options flows don't expose renaming. "
4426
- "Rename a flow helper by deleting and recreating instead."
4425
+ "ignored because options flows don't expose renaming; change the "
4426
+ "resulting entity's display name with ha_set_entity(name=...)."
4427
4427
  ),
4428
4428
  default=None,
4429
4429
  ),
@@ -313,7 +313,11 @@ class ConfigSceneTools:
313
313
  self,
314
314
  scene_id: Annotated[
315
315
  str | None,
316
- Field(description="Scene identifier"),
316
+ Field(
317
+ description="Scene storage ID from listing (e.g. 'movie_night') "
318
+ "or the scene's entity_id; an entity_id is resolved to the "
319
+ "storage ID."
320
+ ),
317
321
  ] = None,
318
322
  query: Annotated[
319
323
  str | None, Field(description="Filter scene names or IDs")
@@ -133,7 +133,7 @@ class ConfigScriptTools:
133
133
 
134
134
  Returns the complete configuration for a script, including sequence, mode, fields, and other settings.
135
135
 
136
- The returned `config_hash` is stable across consecutive reads of an unchanged config — `compute_config_hash` documents the underlying contract.
136
+ The returned `config_hash` stays the same across consecutive reads of an unchanged config.
137
137
 
138
138
  The returned `script_id` is the canonical bare storage key resolved by the REST client (matching what `ha_config_set_script` / `ha_config_remove_script` expect), falling back to the input identifier on the rare path where the REST envelope omits it. Prefix handling matches `ha_config_get_automation` in behavior (mechanism differs: automations resolve via state lookup; scripts strip the prefix).
139
139
 
@@ -582,8 +582,8 @@ class FilesystemTools:
582
582
  - `custom_templates/` - Jinja2 template files
583
583
  - `dashboards/` - YAML-mode dashboard files
584
584
  - `blueprints/` - Automation/script blueprint sources (read-only)
585
- - Your configured `packages/` folder, when `homeassistant: packages:` is
586
- set (the folder name you bound, default `packages/`)
585
+ - `packages/`, plus the folder bound by `homeassistant: packages:` when
586
+ it has another name
587
587
  - Plus any custom directories OR HAOS sibling volumes (`/share`,
588
588
  `/media`, `/ssl`, `/backup`) configured in the ha-mcp settings UI
589
589
  Path traversal (../) is blocked.
@@ -699,7 +699,8 @@ class FilesystemTools:
699
699
  **Allowed Read Paths:**
700
700
  - `configuration.yaml`, `automations.yaml`, `scripts.yaml`, `scenes.yaml`
701
701
  - `secrets.yaml` (values masked)
702
- - `packages/*.yaml`
702
+ - `*.yaml` at any depth under `packages/` and under the folder bound by
703
+ `homeassistant: packages:`
703
704
  - `home-assistant.log`, `home-assistant.log.fault` (tail only)
704
705
  - `www/**`, `themes/**`, `custom_templates/**`, `dashboards/**`, `blueprints/**`
705
706
  - `custom_components/**/*.py` (read-only)
@@ -895,7 +896,9 @@ class FilesystemTools:
895
896
  ) -> dict[str, Any]:
896
897
  """Delete a file from allowed directories in the Home Assistant config.
897
898
 
898
- Permanently removes a file; this cannot be undone. Allowed directories:
899
+ ha_manage_backup(scope="edits") can restore a text file from its most
900
+ recent auto-backup snapshot; a binary file has no snapshot and its
901
+ deletion is permanent. Allowed directories:
899
902
  `www/`, `themes/`, `custom_templates/`, `dashboards/`, plus any custom
900
903
  directories OR HAOS sibling volumes (`/share`, `/media`, `/ssl`,
901
904
  `/backup`) configured in the ha-mcp settings UI. Configuration files
@@ -1052,7 +1052,10 @@ class RegistryTools:
1052
1052
  disabled_by: Annotated[
1053
1053
  str | None,
1054
1054
  Field(
1055
- description="Set to 'user' to disable, or None/empty string to enable",
1055
+ description=(
1056
+ "Set to 'user' to disable the device, or '' (empty string) "
1057
+ "to enable it. Omit to leave the disabled state unchanged."
1058
+ ),
1056
1059
  default=None,
1057
1060
  ),
1058
1061
  ] = None,
@@ -1139,8 +1142,7 @@ class RegistryTools:
1139
1142
  - Active devices will typically be re-added by their integration
1140
1143
  - Associated entities may also be removed
1141
1144
 
1142
- This uses the config entry removal which is the safe way to remove devices.
1143
- If the device has multiple config entries, they must all be removed.
1145
+ Works only when the integration supports removing devices.
1144
1146
 
1145
1147
  EXAMPLES:
1146
1148
  - Remove orphaned device: ha_remove_device("abc123def456")
@@ -2145,17 +2145,26 @@ class ServiceTools:
2145
2145
  ),
2146
2146
  ),
2147
2147
  ],
2148
- timeout_seconds: Annotated[float, Field(ge=0, allow_inf_nan=False)] = 10,
2148
+ timeout_seconds: Annotated[
2149
+ float,
2150
+ Field(
2151
+ ge=0,
2152
+ allow_inf_nan=False,
2153
+ description=(
2154
+ "Seconds to wait for a pending operation to finish before "
2155
+ "returning its status. 0 returns the current status at once."
2156
+ ),
2157
+ ),
2158
+ ] = 10,
2149
2159
  ) -> dict[str, Any]:
2150
2160
  """
2151
2161
  Get the status of one or more device operations with real-time WebSocket verification.
2152
2162
 
2153
- The timeout_seconds wait window bounds single and bulk checks. Bulk checks poll
2154
- all operations concurrently under one shared window and report
2155
- per-item failures inside detailed_results instead of aborting the
2156
- batch.
2163
+ Bulk checks poll all operations concurrently under one shared
2164
+ timeout_seconds window and report per-item failures inside
2165
+ detailed_results instead of aborting the batch.
2157
2166
 
2158
- Use this to track operations initiated by ha_bulk_control or ha_call_service.
2167
+ Use this to track the operation_ids that ha_bulk_control returns.
2159
2168
  For current entity states, use ha_get_state instead.
2160
2169
  """
2161
2170
  try:
@@ -2211,7 +2220,15 @@ class ServiceTools:
2211
2220
  # supplies the runtime default without a `| None` mypy would then
2212
2221
  # require type-narrowing for at every use below `selector is None`.
2213
2222
  ] = cast(Any, None),
2214
- parallel: bool = True,
2223
+ parallel: Annotated[
2224
+ bool,
2225
+ Field(
2226
+ description=(
2227
+ "Dispatch operations concurrently (default) or one at a "
2228
+ "time when False."
2229
+ ),
2230
+ ),
2231
+ ] = True,
2215
2232
  ctx: Context | None = None,
2216
2233
  selector: Annotated[
2217
2234
  SkipValidation[BulkControlSelector] | None,
@@ -2234,10 +2251,38 @@ class ServiceTools:
2234
2251
  ] = None,
2235
2252
  timeout_seconds: Annotated[
2236
2253
  float | None,
2237
- Field(ge=0, le=60, allow_inf_nan=False, strict=True),
2254
+ Field(
2255
+ ge=0,
2256
+ le=60,
2257
+ allow_inf_nan=False,
2258
+ strict=True,
2259
+ description=(
2260
+ "Selector mode only: confirmation wait in seconds for every "
2261
+ "resolved entity. In operations mode set timeout_seconds on "
2262
+ "each operation instead; a top-level value is rejected in "
2263
+ "operations mode."
2264
+ ),
2265
+ ),
2238
2266
  ] = None,
2239
- validate_first: Annotated[bool, Field(strict=True)] = True,
2240
- dry_run: Annotated[bool, Field(strict=True)] = False,
2267
+ validate_first: Annotated[
2268
+ bool,
2269
+ Field(
2270
+ strict=True,
2271
+ description=(
2272
+ "Selector mode only: report ENTITY_NOT_FOUND for a target "
2273
+ "that does not exist. In operations mode set "
2274
+ "validate_first on each operation instead; a top-level "
2275
+ "False is rejected in operations mode."
2276
+ ),
2277
+ ),
2278
+ ] = True,
2279
+ dry_run: Annotated[
2280
+ bool,
2281
+ Field(
2282
+ strict=True,
2283
+ description="Selector mode only; True is rejected in operations mode.",
2284
+ ),
2285
+ ] = False,
2241
2286
  ) -> dict[str, Any]:
2242
2287
  """Manage explicit operations or one deterministic structural bulk action.
2243
2288
 
@@ -2449,8 +2494,22 @@ class ServiceTools:
2449
2494
  @log_tool_usage
2450
2495
  async def ha_call_event(
2451
2496
  self,
2452
- event_type: str,
2453
- data: Annotated[dict[str, Any] | None, JSON_STRING_COERCION] = None,
2497
+ event_type: Annotated[
2498
+ str,
2499
+ Field(
2500
+ description="Event type to fire, e.g. 'my_custom_event'.",
2501
+ ),
2502
+ ],
2503
+ data: Annotated[
2504
+ dict[str, Any] | None,
2505
+ JSON_STRING_COERCION,
2506
+ Field(
2507
+ description=(
2508
+ "Optional event payload, delivered to subscribers as the "
2509
+ "event's data (trigger.event.data in an automation)."
2510
+ ),
2511
+ ),
2512
+ ] = None,
2454
2513
  ) -> dict[str, Any]:
2455
2514
  """Execute a custom event on the Home Assistant event bus.
2456
2515
 
@@ -644,13 +644,9 @@ class SystemTools:
644
644
  connectivity; available information varies by installation type and
645
645
  loaded integrations. Optional sections are selected with `include`.
646
646
 
647
- The result also carries ``ha_mcp_update`` ``{current, latest,
648
- update_available}``, reporting whether a newer ha-mcp release is
649
- available (PyPI for pip/Docker, the Supervisor store for the app) —
650
- proactively tell the user to upgrade. Present on every install type
651
- including the HA app; omitted for the ``unknown`` version, when
652
- ``HA_MCP_DISABLE_UPDATE_CHECK`` is set, or when the update check itself
653
- failed.
647
+ The result may include ``ha_mcp_update`` ``{current, latest,
648
+ update_available}``. When update_available is true, tell the user a
649
+ newer ha-mcp release is available.
654
650
 
655
651
  EXAMPLES:
656
652
  - ha_get_system_health(include="repairs,zha_network,zwave_network,config_check")
@@ -118,9 +118,10 @@ class TraceTools:
118
118
 
119
119
  Traces show what triggered a run, which conditions passed or failed,
120
120
  which actions executed (for 'choose', which branch was taken), any
121
- errors, and variable values during execution. Traces are stored for a
122
- limited time by Home Assistant. The 'state' field shows 'stopped'
123
- (completed), 'running', or an error state.
121
+ errors, and variable values during execution. Home Assistant keeps
122
+ only the most recent runs of each automation or script (its
123
+ stored_traces setting), so older runs are not available. The 'state'
124
+ field shows 'stopped' (completed), 'running', or an error state.
124
125
 
125
126
  USAGE MODES:
126
127
  1. List recent traces (omit run_id): returns a summary of recent runs
@@ -397,9 +397,10 @@ class YamlConfigTools:
397
397
  configuration.yaml carries the ``frontend: themes:`` include (e.g.
398
398
  ``!include_dir_merge_named themes``); this tool cannot add that include
399
399
  (``frontend`` is not an allowed key). ``automation``, ``script`` and
400
- ``scene`` keys are accepted only when ``file`` is a ``packages/*.yaml``;
401
- writes of those keys to ``configuration.yaml`` are rejected — use the
402
- storage-mode tools.
400
+ ``scene`` keys are accepted only when ``file`` is a ``packages/*.yaml``
401
+ and the operator has turned on that key's packages setting (each is
402
+ off by default); writes of those keys to ``configuration.yaml`` are
403
+ rejected; use the storage-mode tools.
403
404
 
404
405
  Check ``post_action`` in the response: most keys need a full HA
405
406
  restart. For ``themes/*.yaml`` this tool *performs* the reload itself
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 8.5.0.dev2757
3
+ Version: 8.5.0.dev2759
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Author-email: Julien <github@qc-h.net>
6
6
  License: MIT