ha-mcp-dev 8.5.0.dev2742__tar.gz → 8.5.0.dev2745__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (735) hide show
  1. {ha_mcp_dev-8.5.0.dev2742/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.5.0.dev2745}/PKG-INFO +1 -1
  2. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/pyproject.toml +1 -1
  3. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/server.py +25 -7
  4. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/entity_registration.py +5 -3
  5. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_addons.py +1 -1
  6. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_config_automations.py +188 -63
  7. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_config_scenes.py +164 -16
  8. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_config_scripts.py +125 -2
  9. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_entities.py +9 -7
  10. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_integrations.py +127 -21
  11. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_logs.py +1 -1
  12. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_search.py +5 -1
  13. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_service.py +32 -32
  14. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_system.py +5 -1
  15. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_updates.py +117 -6
  16. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/util_helpers.py +35 -13
  17. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
  18. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/LICENSE +0 -0
  19. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/MANIFEST.in +0 -0
  20. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/README.md +0 -0
  21. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/setup.cfg +0 -0
  22. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/__init__.py +0 -0
  23. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/__main__.py +0 -0
  24. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_pypi_marker +0 -0
  25. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_rich_compat.py +0 -0
  26. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/__init__.py +0 -0
  27. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  28. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  29. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  30. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  31. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  32. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  33. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  34. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  35. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  36. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  37. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  38. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  39. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  40. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  41. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  42. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  43. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  44. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  45. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  46. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  47. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  48. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  49. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  50. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  51. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  52. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  53. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  54. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  55. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  56. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  57. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  58. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  59. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  60. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  61. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  62. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  63. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  64. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  65. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  66. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  67. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  68. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  69. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  70. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  71. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  72. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  73. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  74. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  75. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  76. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  77. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  78. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  79. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  80. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  81. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  82. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  83. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  84. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  85. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  86. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  87. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  88. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  89. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  90. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  91. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  92. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  93. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  94. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  95. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  96. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  97. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  98. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  99. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  100. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  101. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  102. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  103. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  104. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  105. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  106. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  107. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  108. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  109. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  110. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  111. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  112. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  113. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  114. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  115. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  116. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  117. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  118. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  119. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  120. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  121. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  122. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  123. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  124. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  125. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  126. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  127. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  128. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  129. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  130. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  131. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  132. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  133. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  134. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  135. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  136. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  137. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  138. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  139. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  140. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  141. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  142. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  143. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  144. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  145. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  146. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  147. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  148. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  149. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  150. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  151. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  152. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  153. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  154. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  155. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  156. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  157. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  158. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  159. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  160. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  161. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  162. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  163. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  164. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  165. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  166. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  167. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  168. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  169. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  170. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  171. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  172. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  173. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  174. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  175. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  176. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  177. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  178. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  179. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  180. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  181. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  182. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  183. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  184. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  185. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  186. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  187. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  188. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  189. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  190. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  191. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  192. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  193. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  194. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  195. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  196. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  197. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  198. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  199. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  200. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  201. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  202. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  203. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  204. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  205. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  206. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  207. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  208. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  209. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  210. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  211. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  212. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  213. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  214. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  215. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  216. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  217. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  218. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  219. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  220. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  221. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  222. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  223. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  224. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  225. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  226. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  227. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  228. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  229. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  230. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  231. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  232. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  233. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  234. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  235. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  236. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  237. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  238. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  239. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  240. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  241. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  242. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  243. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  244. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  245. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  246. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  247. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  248. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  249. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  250. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  251. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  252. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  253. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  254. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  255. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  256. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  257. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  258. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  259. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  260. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  261. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  262. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  263. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  264. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  265. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  266. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  267. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  268. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  269. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  270. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  271. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  272. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  273. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  274. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  275. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  276. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  277. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  278. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  279. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  280. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  281. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  282. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  283. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  284. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  285. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  286. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  287. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  288. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  289. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  290. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  291. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  292. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  293. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  294. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  295. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  296. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  297. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  298. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  299. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  300. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  301. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  302. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  303. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  304. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  305. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  306. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  307. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  308. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  309. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  310. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  311. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  312. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  313. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  314. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  315. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  316. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  317. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  318. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  319. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  320. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  321. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  322. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  323. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  324. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  325. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  326. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  327. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  328. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  329. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  330. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  331. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  332. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  333. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  334. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  335. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  336. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  337. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  338. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  339. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  340. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  341. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  342. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  343. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  344. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  345. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  346. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  347. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  348. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  349. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  350. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  351. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  352. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  353. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  354. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  355. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  356. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  357. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  358. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  359. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  360. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  361. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  362. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  363. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  364. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  365. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  366. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  367. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  368. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  369. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  370. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  371. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  372. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  373. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  374. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  375. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  376. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  377. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  378. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  379. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  380. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  381. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  382. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  383. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  384. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  385. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  386. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  387. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  388. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  389. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  390. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  391. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  392. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  393. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  394. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  395. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  396. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  397. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  398. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  399. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  400. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  401. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  402. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  403. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  404. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  405. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  406. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  407. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  408. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  409. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  410. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  411. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  412. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  413. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  414. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  415. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  416. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  417. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  418. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  419. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  420. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  421. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  422. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  423. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  424. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  425. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  426. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  427. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  428. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  429. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  430. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  431. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  432. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  433. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  434. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  435. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  436. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  437. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/requirements.txt +0 -0
  438. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  439. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  440. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  441. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  442. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  443. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  444. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  445. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  446. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  447. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  448. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  449. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  450. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  451. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  452. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  453. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  454. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  455. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  456. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  457. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  458. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  459. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  460. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  461. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  462. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  463. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  464. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  465. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  466. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  467. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  468. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  469. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  470. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  471. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  472. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  473. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  474. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  475. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  476. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  477. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  478. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  479. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  480. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  481. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  482. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  483. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  484. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  485. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  486. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  487. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  488. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  489. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  490. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  491. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  492. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  493. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  494. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_version.py +0 -0
  495. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/auth/__init__.py +0 -0
  496. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/auth/consent_form.py +0 -0
  497. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/auth/oidc_compat.py +0 -0
  498. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/auth/provider.py +0 -0
  499. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/backup_manager.py +0 -0
  500. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/browser_landing.py +0 -0
  501. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/client/__init__.py +0 -0
  502. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/client/rest_client.py +0 -0
  503. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/client/supervisor_client.py +0 -0
  504. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/client/websocket_client.py +0 -0
  505. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/client/websocket_listener.py +0 -0
  506. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/config.py +0 -0
  507. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  508. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  509. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  510. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  511. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  512. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  513. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/errors.py +0 -0
  514. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/ha_request_queue.py +0 -0
  515. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  516. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/http_transport.py +0 -0
  517. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/llm_exposure.py +0 -0
  518. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/log_filters.py +0 -0
  519. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/__init__.py +0 -0
  520. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/approval_queue.py +0 -0
  521. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/decision_pin.py +0 -0
  522. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/decisions.py +0 -0
  523. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/editing.py +0 -0
  524. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/evaluator.py +0 -0
  525. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/events.py +0 -0
  526. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/handlers.py +0 -0
  527. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/middleware.py +0 -0
  528. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/model.py +0 -0
  529. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/persistence.py +0 -0
  530. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/value_sources.py +0 -0
  531. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/py.typed +0 -0
  532. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/read_only.py +0 -0
  533. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/redaction.py +0 -0
  534. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/renamed_tools.py +0 -0
  535. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
  536. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
  537. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
  538. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
  539. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
  540. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
  541. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
  542. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
  543. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  544. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
  545. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/area-target-over-entity-list/case.yaml +0 -0
  546. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/arrive-home-automation/case.yaml +0 -0
  547. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/assist-shortcut-card/case.yaml +0 -0
  548. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/avg-temperature/case.yaml +0 -0
  549. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/backup-deletion-confirmation/case.yaml +0 -0
  550. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/blueprint-authoring/case.yaml +0 -0
  551. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/button-event-entity/case.yaml +0 -0
  552. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/device-id-trigger-migration/case.yaml +0 -0
  553. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/helper-flow-fields-not-platform-yaml/case.yaml +0 -0
  554. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/media-player-song/case.yaml +0 -0
  555. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/motion-light-automation-mode/case.yaml +0 -0
  556. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/rename-entity-impact-analysis/case.yaml +0 -0
  557. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/template-attributes-yaml-exception/case.yaml +0 -0
  558. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/timer-finished-automation/case.yaml +0 -0
  559. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/vacuum-last-clean/case.yaml +0 -0
  560. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/scripts/check_eval_cases.py +0 -0
  561. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  562. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  563. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
  564. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  565. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  566. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  567. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  568. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  569. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  570. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  571. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  572. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  573. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  574. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  575. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  576. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/__init__.py +0 -0
  577. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  578. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  579. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  580. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  581. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  582. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  583. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  584. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  585. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  586. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  587. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_theme.py +0 -0
  588. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  589. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  590. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  591. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  592. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  593. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  594. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  595. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  596. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  597. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  598. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  599. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  600. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  601. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  602. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  603. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  604. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  605. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  606. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/settings.css +0 -0
  607. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/settings.html +0 -0
  608. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/settings.js +0 -0
  609. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/smoke_test.py +0 -0
  610. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  611. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/strict_bps.py +0 -0
  612. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tool_dispatch.py +0 -0
  613. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/__init__.py +0 -0
  614. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/auto_backup.py +0 -0
  615. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/backup.py +0 -0
  616. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  617. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/best_practice_result.py +0 -0
  618. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  619. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  620. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  621. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/blueprint_write.py +0 -0
  622. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/bulk_selector.py +0 -0
  623. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_api.py +0 -0
  624. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_config_entries.py +0 -0
  625. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_config_reads.py +0 -0
  626. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  627. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_devices.py +0 -0
  628. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_registries.py +0 -0
  629. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  630. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  631. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  632. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  633. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  634. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  635. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
  636. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  637. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  638. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/device_control.py +0 -0
  639. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  640. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/hacs_registration.py +0 -0
  641. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/helpers.py +0 -0
  642. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
  643. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/log_common.py +0 -0
  644. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/log_sources.py +0 -0
  645. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  646. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  647. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/__init__.py +0 -0
  648. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/base.py +0 -0
  649. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/matter.py +0 -0
  650. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/thread.py +0 -0
  651. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  652. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/zwave.py +0 -0
  653. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/reference_validator.py +0 -0
  654. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/registry.py +0 -0
  655. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  656. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/scene_discovery.py +0 -0
  657. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  658. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  659. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  660. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  661. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  662. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  663. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  664. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  665. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  666. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  667. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  668. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_areas.py +0 -0
  669. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  670. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  671. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  672. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_calendar.py +0 -0
  673. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_camera.py +0 -0
  674. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_categories.py +0 -0
  675. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_code.py +0 -0
  676. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  677. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  678. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  679. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_dev.py +0 -0
  680. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_energy.py +0 -0
  681. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  682. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_groups.py +0 -0
  683. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_hacs.py +0 -0
  684. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_history.py +0 -0
  685. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_labels.py +0 -0
  686. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_radio.py +0 -0
  687. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_registry.py +0 -0
  688. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_resources.py +0 -0
  689. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  690. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_services.py +0 -0
  691. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_themes.py +0 -0
  692. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_todo.py +0 -0
  693. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_traces.py +0 -0
  694. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_utility.py +0 -0
  695. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  696. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  697. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  698. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_zones.py +0 -0
  699. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/validation_middleware.py +0 -0
  700. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transforms/__init__.py +0 -0
  701. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transforms/categorized_search.py +0 -0
  702. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transforms/component_search.py +0 -0
  703. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  704. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  705. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transport_security.py +0 -0
  706. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/update_check.py +0 -0
  707. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/__init__.py +0 -0
  708. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/config_hash.py +0 -0
  709. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/config_write_lock.py +0 -0
  710. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  711. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/data_paths.py +0 -0
  712. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  713. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/domain_handlers.py +0 -0
  714. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/entity_membership.py +0 -0
  715. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  716. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  717. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  718. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/operation_manager.py +0 -0
  719. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/python_sandbox.py +0 -0
  720. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  721. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/skill_loader.py +0 -0
  722. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/usage_logger.py +0 -0
  723. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/visibility/__init__.py +0 -0
  724. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/visibility/enforcement.py +0 -0
  725. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/visibility/model.py +0 -0
  726. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/visibility/persistence.py +0 -0
  727. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/visibility/resolver.py +0 -0
  728. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
  729. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
  730. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
  731. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
  732. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
  733. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/tests/__init__.py +0 -0
  734. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/tests/test_constants.py +0 -0
  735. {ha_mcp_dev-8.5.0.dev2742 → ha_mcp_dev-8.5.0.dev2745}/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.dev2742
3
+ Version: 8.5.0.dev2745
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.dev2742"
7
+ version = "8.5.0.dev2745"
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
@@ -662,11 +662,23 @@ class HomeAssistantSmartMCPServer:
662
662
  "ha_config_set_automation": (
663
663
  "create update modify edit automation triggers conditions actions "
664
664
  "new automation write save take control blueprint detach "
665
- "unlink standalone convert"
665
+ "unlink standalone convert enable disable turn on off run trigger now"
666
666
  ),
667
667
  "ha_config_set_script": (
668
668
  "create update modify edit script sequence actions new script write "
669
- "save take control blueprint detach unlink standalone convert"
669
+ "save take control blueprint detach unlink standalone convert "
670
+ "run start stop execute"
671
+ ),
672
+ "ha_config_set_scene": (
673
+ "create update modify edit scene entities snapshot activate apply turn on"
674
+ ),
675
+ "ha_manage_updates": (
676
+ "update updates install skip firmware core os repair repairs issue "
677
+ "ignore dismiss unignore"
678
+ ),
679
+ "ha_set_integration": (
680
+ "integration config entry enable disable add options reconfigure "
681
+ "log level debug logging"
670
682
  ),
671
683
  "ha_config_set_yaml": (
672
684
  "edit yaml configuration.yaml packages template sensor "
@@ -743,7 +755,9 @@ class HomeAssistantSmartMCPServer:
743
755
  "to convert a blueprint-backed automation into an editable "
744
756
  "standalone one (the UI's Take control action). Omit "
745
757
  "`identifier` to create a new automation. Reusing an identifier targets "
746
- "the same automation; changing its alias requires config_hash from a prior read.\n\n"
758
+ "the same automation; changing its alias requires config_hash from a prior read. "
759
+ "`enabled` turns it on or off and `run_actions` runs it now, with a "
760
+ "write or alone with `identifier`.\n\n"
747
761
  "For schema details, examples, and native-vs-template "
748
762
  "guidance, see ha_get_skill_guide or your locally "
749
763
  "installed skills."
@@ -763,7 +777,8 @@ class HomeAssistantSmartMCPServer:
763
777
  "`config_hash` from ha_config_get_script), or "
764
778
  "`take_control_of_blueprint` to convert a blueprint-backed "
765
779
  "script into an editable standalone one. `script_id` names "
766
- "the script in every mode.\n\n"
780
+ "the script in every mode. `run` ('start' / 'stop'), used alone "
781
+ "with `script_id`, starts or stops the script.\n\n"
767
782
  "For schema details and examples, see "
768
783
  "ha_get_skill_guide or your locally installed skills."
769
784
  ),
@@ -782,7 +797,8 @@ class HomeAssistantSmartMCPServer:
782
797
  "Create or update a Home Assistant scene.\n\n"
783
798
  "Supports two modes: full `config` replacement, or surgical "
784
799
  "`python_transform` on an existing scene (requires "
785
- "`config_hash`). `scene_id` names the scene in both modes.\n\n"
800
+ "`config_hash`). `scene_id` names the scene in both modes. "
801
+ "`activate` activates the scene, with a write or alone.\n\n"
786
802
  "For schema details and examples, see "
787
803
  "ha_get_skill_guide or your locally installed skills."
788
804
  ),
@@ -846,8 +862,10 @@ class HomeAssistantSmartMCPServer:
846
862
  "ha_get_skill_guide or your locally installed skills."
847
863
  ),
848
864
  "ha_call_service": (
849
- "Execute a Home Assistant service to control entities or "
850
- "trigger automations. Calls `<domain>.<service>` "
865
+ "Call any Home Assistant service or one-shot WebSocket command: "
866
+ "the catch-all escape hatch. Prefer a dedicated tool when one "
867
+ "covers the job (automations, scripts, scenes, apps, updates and "
868
+ "repairs, integration log levels). Calls `<domain>.<service>` "
851
869
  "(e.g., light.turn_on, climate.set_temperature). Use "
852
870
  "ha_search to find entity IDs and ha_get_state "
853
871
  "to read current values before changing them.\n\n"
@@ -82,9 +82,11 @@ async def resolve_entity_id_after_write(
82
82
  An empty registry read can precede asynchronous registration even inside
83
83
  the component. Retry against one deadline, checking component availability
84
84
  on every attempt. A positive budget includes in-flight lookups and sleeps;
85
- zero requests one lookup without a time limit, for test fixtures. Known
86
- API failures retain the best-effort fallback. Errors escaping the component
87
- adapter propagate unless listed below; cancellation always propagates.
85
+ zero requests one lookup without a time limit, for test fixtures and for
86
+ callers that need an existing entity without waiting (a standalone script
87
+ run). Known API failures retain the best-effort fallback. Errors escaping
88
+ the component adapter propagate unless listed below; cancellation always
89
+ propagates.
88
90
  ``fallback_entity_id`` overrides the constructed ID on failure; registry
89
91
  matching always uses the storage key.
90
92
 
@@ -1302,7 +1302,7 @@ def _validate_addon_access(
1302
1302
  ErrorCode.SERVICE_CALL_FAILED,
1303
1303
  f"App (add-on) '{addon_name}' is not running (state: {addon.get('state')})",
1304
1304
  suggestions=[
1305
- f"Start the app (add-on) first with: ha_call_service('hassio', 'addon_start', {{'addon': '{slug}'}})",
1305
+ f"Start the app (add-on) first with: ha_manage_app(slug='{slug}', action='start')",
1306
1306
  ],
1307
1307
  context={"slug": slug, "state": addon.get("state")},
1308
1308
  )
@@ -60,10 +60,11 @@ from .util_helpers import (
60
60
  attach_skill_content,
61
61
  augment_error_dict_with_skill_content,
62
62
  augment_tool_error_with_skill_content,
63
- automation_reload_waiter,
64
63
  coerce_to_list,
64
+ config_reload_waiter,
65
65
  fetch_entity_category,
66
66
  merge_validation_meta,
67
+ note_reload_outcome,
67
68
  parse_json_param,
68
69
  wait_for_automation_entity_by_unique_id,
69
70
  wait_for_entity_registered,
@@ -338,9 +339,9 @@ def _validate_automation_identifier(identifier: str | None) -> None:
338
339
 
339
340
 
340
341
  def _skip_automation_runtime_backup(kwargs: dict[str, Any]) -> bool:
341
- """Skip config snapshots for runtime-only enabled changes."""
342
+ """Skip config snapshots for runtime-only calls (enabled / run_actions)."""
342
343
  return (
343
- kwargs.get("enabled") is not None
344
+ (kwargs.get("enabled") is not None or bool(kwargs.get("run_actions")))
344
345
  and kwargs.get("config") is None
345
346
  and kwargs.get("python_transform") is None
346
347
  and not kwargs.get("take_control_of_blueprint")
@@ -370,10 +371,10 @@ async def _resolve_post_write_automation_entity(
370
371
  return entity_id
371
372
 
372
373
 
373
- async def _resolve_enabled_target(
374
+ async def _resolve_runtime_target(
374
375
  client: Any, identifier: str, response: dict[str, Any]
375
376
  ) -> str | None:
376
- """Resolve the entity to receive a runtime enabled-state change."""
377
+ """Resolve the entity to receive a runtime change (enabled / run_actions)."""
377
378
  if identifier.startswith("automation."):
378
379
  return identifier
379
380
  # A config write reloads the automation and replaces its entity when the
@@ -384,23 +385,6 @@ async def _resolve_enabled_target(
384
385
  )
385
386
 
386
387
 
387
- def _note_reload_outcome(
388
- result: dict[str, Any], reloaded: bool | None, enabled: bool | None
389
- ) -> None:
390
- """Warn when an enabled change could not be ordered after the reload."""
391
- if enabled is None or reloaded:
392
- return
393
- reason = (
394
- "did not confirm the automation reload"
395
- if reloaded is False
396
- else "could not be watched for the automation reload (no WebSocket)"
397
- )
398
- result.setdefault("warnings", []).append(
399
- f"Home Assistant {reason}; the requested enabled state may be "
400
- "reverted when the reload completes."
401
- )
402
-
403
-
404
388
  def _sync_post_write_automation_result(
405
389
  response: dict[str, Any], entity_id: str | None
406
390
  ) -> None:
@@ -410,6 +394,34 @@ def _sync_post_write_automation_result(
410
394
  response.pop("entity_not_verified", None)
411
395
 
412
396
 
397
+ def _run_actions_once_reloaded(
398
+ result: dict[str, Any],
399
+ reloaded: bool | None,
400
+ run_actions: bool,
401
+ identifier: str | None,
402
+ ) -> bool:
403
+ """Keep run_actions after a write only once the reload is confirmed.
404
+
405
+ Unlike ``enabled``, a run cannot be corrected afterwards: before the reload
406
+ it would run the previous actions, or hit no entity at all.
407
+ """
408
+ if not run_actions or reloaded:
409
+ return run_actions
410
+ result["actions_triggered"] = False
411
+ result.setdefault("warnings", []).append(
412
+ "Automation was written, but its actions were not run: the reload the "
413
+ "write scheduled could not be confirmed, so they could have run the "
414
+ "previous version. Run them with ha_config_set_automation("
415
+ f"identifier='{identifier or '<automation id>'}', run_actions=True)."
416
+ )
417
+ return False
418
+
419
+
420
+ # Standalone runtime calls raise on a service failure; after a config write the
421
+ # same failure is a partial-success warning because the write already landed.
422
+ _STANDALONE_RUNTIME_ACTIONS = ("set_enabled", "run_actions")
423
+
424
+
413
425
  def _reject_enabled_in_config(config: Any) -> None:
414
426
  """Reject the runtime-only ``enabled`` key in a stored config body."""
415
427
  if isinstance(config, dict) and "enabled" in config:
@@ -740,6 +752,18 @@ class AutomationConfigTools:
740
752
  default=None,
741
753
  ),
742
754
  ] = None,
755
+ run_actions: Annotated[
756
+ bool,
757
+ Field(
758
+ description=(
759
+ "Run the automation's actions now, skipping its triggers and "
760
+ "conditions (automation.trigger, the UI's Run actions). Applied "
761
+ "after `enabled` and after any config write. Can be used "
762
+ "standalone with identifier and no config."
763
+ ),
764
+ default=False,
765
+ ),
766
+ ] = False,
743
767
  MandatoryBPS: Annotated[
744
768
  bool,
745
769
  Field(default=True),
@@ -791,6 +815,7 @@ class AutomationConfigTools:
791
815
  - From a blueprint: ha_config_set_automation(config={"alias": "Motion Light Kitchen", "use_blueprint": {"path": "homeassistant/motion_light.yaml", "input": {"motion_entity": "binary_sensor.kitchen_motion", "light_target": {"entity_id": "light.kitchen"}}}})
792
816
  - Update: current = ha_config_get_automation(identifier="automation.x"); ha_config_set_automation(identifier="automation.x", config_hash=current["config_hash"], config={...})
793
817
  - Disable: ha_config_set_automation(identifier="automation.x", enabled=False)
818
+ - Run now: ha_config_set_automation(identifier="automation.x", run_actions=True)
794
819
  - Take control: ha_config_set_automation(identifier="automation.x", take_control_of_blueprint=True)
795
820
 
796
821
  TAKE CONTROL is one-way: later blueprint edits stop reaching the
@@ -833,22 +858,23 @@ class AutomationConfigTools:
833
858
  # wins, so it can still lock against a config it read itself.
834
859
  config_hash = config_hash or taken.config_hash
835
860
 
836
- enabled_only_response = await self._maybe_set_enabled_only(
861
+ runtime_only_response = await self._maybe_set_runtime_only(
837
862
  identifier,
838
863
  config,
839
864
  python_transform,
840
865
  category,
841
866
  enabled,
867
+ run_actions,
842
868
  wait,
843
869
  )
844
- if enabled_only_response is not None:
870
+ if runtime_only_response is not None:
845
871
  attach_skill_content(
846
- enabled_only_response,
872
+ runtime_only_response,
847
873
  MandatoryBPS=MandatoryBPS,
848
874
  canonical_files=_AUTOMATION_SKILL_FILES,
849
875
  referenced_files=bp_warnings.referenced_files,
850
876
  )
851
- return enabled_only_response
877
+ return runtime_only_response
852
878
 
853
879
  if python_transform is not None:
854
880
  response, bp_warnings = await self._run_python_transform(
@@ -859,6 +885,7 @@ class AutomationConfigTools:
859
885
  MandatoryBPS,
860
886
  enabled,
861
887
  wait,
888
+ run_actions=run_actions,
862
889
  )
863
890
  return response
864
891
 
@@ -933,6 +960,7 @@ class AutomationConfigTools:
933
960
  resolved_id,
934
961
  detached_blueprint,
935
962
  enabled,
963
+ run_actions=run_actions,
936
964
  )
937
965
 
938
966
  except ToolError as te:
@@ -1061,17 +1089,20 @@ class AutomationConfigTools:
1061
1089
  )
1062
1090
  return TakenControl(taken, blueprint_path, fetched_hash)
1063
1091
 
1064
- async def _maybe_set_enabled_only(
1092
+ async def _maybe_set_runtime_only(
1065
1093
  self,
1066
1094
  identifier: str | None,
1067
1095
  config: Any,
1068
1096
  python_transform: str | None,
1069
1097
  category: str | None,
1070
1098
  enabled: bool | None,
1099
+ run_actions: bool,
1071
1100
  wait: bool,
1072
1101
  ) -> dict[str, Any] | None:
1073
- """Handle a standalone runtime state request, if one was supplied."""
1074
- if enabled is None or config is not None or python_transform is not None:
1102
+ """Handle a standalone runtime request (enabled / run_actions), if any."""
1103
+ if (enabled is None and not run_actions) or (
1104
+ config is not None or python_transform is not None
1105
+ ):
1075
1106
  return None
1076
1107
  if category is not None:
1077
1108
  raise_tool_error(
@@ -1080,27 +1111,36 @@ class AutomationConfigTools:
1080
1111
  "category requires a config update",
1081
1112
  suggestions=[
1082
1113
  "Pass config or python_transform when assigning a category",
1083
- "Omit category for a standalone enabled state change",
1114
+ "Omit category for a standalone enabled or run_actions call",
1084
1115
  ],
1085
- context={"action": "set_enabled", "category": category},
1116
+ context={"action": "set_runtime", "category": category},
1086
1117
  )
1087
1118
  )
1088
- return await self._set_enabled_only(identifier, enabled, wait)
1119
+ return await self._set_runtime_only(
1120
+ identifier, enabled, wait, run_actions=run_actions
1121
+ )
1089
1122
 
1090
- async def _set_enabled_only(
1091
- self, identifier: str | None, enabled: bool, wait: bool
1123
+ async def _set_runtime_only(
1124
+ self,
1125
+ identifier: str | None,
1126
+ enabled: bool | None,
1127
+ wait: bool,
1128
+ *,
1129
+ run_actions: bool = False,
1092
1130
  ) -> dict[str, Any]:
1093
- """Set an existing automation's runtime state without replacing config."""
1131
+ """Apply enabled and/or run_actions to an existing automation, no config."""
1132
+ action = "set_enabled" if enabled is not None else "run_actions"
1094
1133
  if not identifier:
1095
1134
  raise_tool_error(
1096
1135
  create_error_response(
1097
1136
  ErrorCode.VALIDATION_INVALID_PARAMETER,
1098
- "identifier is required when setting enabled without config",
1137
+ "identifier is required when setting enabled or run_actions "
1138
+ "without config",
1099
1139
  suggestions=[
1100
1140
  "Pass an automation entity_id or unique_id",
1101
1141
  "Use ha_search(domain_filter='automation') to find automations",
1102
1142
  ],
1103
- context={"action": "set_enabled", "enabled": enabled},
1143
+ context={"action": action, "enabled": enabled},
1104
1144
  )
1105
1145
  )
1106
1146
  entity_id = await self._resolve_automation_entity_id_strict(identifier)
@@ -1108,19 +1148,20 @@ class AutomationConfigTools:
1108
1148
  await self._raise_automation_not_found(identifier)
1109
1149
  response: dict[str, Any] = {
1110
1150
  "success": True,
1111
- "action": "set_enabled",
1151
+ "action": action,
1112
1152
  "automation_id": entity_id,
1113
1153
  }
1114
- await self._apply_enabled_state(
1154
+ await self._apply_runtime_state(
1115
1155
  response,
1116
1156
  entity_id,
1117
1157
  enabled,
1118
1158
  wait,
1119
1159
  identifier=identifier,
1160
+ run_actions=run_actions,
1120
1161
  )
1121
1162
  return response
1122
1163
 
1123
- async def _apply_enabled_state(
1164
+ async def _apply_runtime_state(
1124
1165
  self,
1125
1166
  response: dict[str, Any],
1126
1167
  entity_id: str | None,
@@ -1128,31 +1169,58 @@ class AutomationConfigTools:
1128
1169
  wait: bool,
1129
1170
  *,
1130
1171
  identifier: str | None = None,
1172
+ run_actions: bool = False,
1131
1173
  ) -> str | None:
1132
- """Turn the automation on or off without touching its stored config.
1174
+ """Apply enabled and then run_actions without touching the stored config.
1133
1175
 
1134
- Resolves ``entity_id`` from ``identifier`` when it is None. On the
1135
- standalone ``set_enabled`` action a service failure raises a ToolError;
1136
- after a config write it is reported as a partial-success warning, since
1137
- the write itself already landed. Returns the resolved entity_id.
1176
+ Resolves ``entity_id`` from ``identifier`` when it is None. On a
1177
+ standalone call a service failure raises a ToolError; after a config
1178
+ write it is reported as a partial-success warning, since the write
1179
+ itself already landed. Returns the resolved entity_id.
1138
1180
  """
1139
- if enabled is None:
1181
+ if enabled is None and not run_actions:
1140
1182
  return entity_id
1141
1183
  if entity_id is None and identifier:
1142
- entity_id = await _resolve_enabled_target(
1184
+ entity_id = await _resolve_runtime_target(
1143
1185
  self._client, identifier, response
1144
1186
  )
1145
1187
  if entity_id is None:
1146
- response["enabled_requested"] = enabled
1147
- response["enabled_applied"] = False
1188
+ retry_args: list[str] = []
1189
+ if enabled is not None:
1190
+ response["enabled_requested"] = enabled
1191
+ response["enabled_applied"] = False
1192
+ retry_args.append(f"enabled={enabled}")
1193
+ if run_actions:
1194
+ response["actions_triggered"] = False
1195
+ retry_args.append("run_actions=True")
1148
1196
  retry_id = identifier or response.get("unique_id") or "<automation id>"
1149
1197
  response.setdefault("warnings", []).append(
1150
1198
  "Automation was written, but its entity_id could not be resolved; "
1151
- "the requested enabled state was not applied. Retry with "
1199
+ "the requested runtime change was not applied. Retry with "
1152
1200
  f"ha_config_set_automation(identifier='{retry_id}', "
1153
- f"enabled={enabled}) once the automation is loaded."
1201
+ f"{', '.join(retry_args)}) once the automation is loaded."
1154
1202
  )
1155
1203
  return None
1204
+ if enabled is not None:
1205
+ await self._apply_enabled_state(
1206
+ response, entity_id, enabled, wait, identifier=identifier
1207
+ )
1208
+ if run_actions:
1209
+ await self._run_automation_actions(
1210
+ response, entity_id, identifier=identifier
1211
+ )
1212
+ return entity_id
1213
+
1214
+ async def _apply_enabled_state(
1215
+ self,
1216
+ response: dict[str, Any],
1217
+ entity_id: str,
1218
+ enabled: bool,
1219
+ wait: bool,
1220
+ *,
1221
+ identifier: str | None = None,
1222
+ ) -> None:
1223
+ """Turn the resolved automation on or off, then optionally verify it."""
1156
1224
  try:
1157
1225
  await _set_automation_enabled(self._client, entity_id, enabled)
1158
1226
  except (
@@ -1160,7 +1228,7 @@ class AutomationConfigTools:
1160
1228
  HomeAssistantAuthError,
1161
1229
  HomeAssistantConnectionError,
1162
1230
  ) as exc:
1163
- if response.get("action") == "set_enabled":
1231
+ if response.get("action") in _STANDALONE_RUNTIME_ACTIONS:
1164
1232
  exception_to_structured_error(
1165
1233
  exc,
1166
1234
  context={
@@ -1181,12 +1249,49 @@ class AutomationConfigTools:
1181
1249
  "Automation config was written, but the requested enabled state "
1182
1250
  f"could not be applied: {exc}"
1183
1251
  )
1184
- return entity_id
1252
+ return
1185
1253
  response["enabled"] = enabled
1186
1254
  response["enabled_applied"] = True
1187
1255
  if wait:
1188
1256
  await self._verify_enabled_state(response, entity_id, enabled)
1189
- return entity_id
1257
+
1258
+ async def _run_automation_actions(
1259
+ self,
1260
+ response: dict[str, Any],
1261
+ entity_id: str,
1262
+ *,
1263
+ identifier: str | None = None,
1264
+ ) -> None:
1265
+ """Run the automation's actions now via automation.trigger."""
1266
+ try:
1267
+ await self._client.call_service(
1268
+ "automation", "trigger", {"entity_id": entity_id}
1269
+ )
1270
+ except (
1271
+ HomeAssistantAPIError,
1272
+ HomeAssistantAuthError,
1273
+ HomeAssistantConnectionError,
1274
+ ) as exc:
1275
+ # With enabled in the same standalone call, the state change has
1276
+ # already landed, so a failed run is a partial success, not an error.
1277
+ if response.get("action") == "run_actions":
1278
+ exception_to_structured_error(
1279
+ exc,
1280
+ context={
1281
+ "action": "run_actions",
1282
+ "identifier": identifier,
1283
+ "entity_id": entity_id,
1284
+ },
1285
+ )
1286
+ logger.warning(
1287
+ "Actions not run for %s after config write: %s", entity_id, exc
1288
+ )
1289
+ response["actions_triggered"] = False
1290
+ response.setdefault("warnings", []).append(
1291
+ f"The requested change was applied, but the actions could not be run: {exc}"
1292
+ )
1293
+ return
1294
+ response["actions_triggered"] = True
1190
1295
 
1191
1296
  async def _verify_enabled_state(
1192
1297
  self, response: dict[str, Any], entity_id: str, enabled: bool
@@ -1220,6 +1325,8 @@ class AutomationConfigTools:
1220
1325
  MandatoryBPS: bool,
1221
1326
  enabled: bool | None,
1222
1327
  wait: bool,
1328
+ *,
1329
+ run_actions: bool = False,
1223
1330
  ) -> tuple[dict[str, Any], BestPracticeCheckResult]:
1224
1331
  """Execute python_transform mode and return (response, bp_warnings)."""
1225
1332
  if not identifier:
@@ -1292,13 +1399,20 @@ class AutomationConfigTools:
1292
1399
  # storage key; thread it so the upsert skips the redundant re-resolve
1293
1400
  # (issue #1813 Phase 0). Fall back to the raw identifier if the fetched
1294
1401
  # body carried no ``id`` (not expected for a real automation).
1295
- async with automation_reload_waiter(
1296
- self._client, enabled=enabled is not None
1402
+ runtime_requested = enabled is not None or run_actions
1403
+ async with config_reload_waiter(
1404
+ self._client, "automation_reloaded", enabled=runtime_requested
1297
1405
  ) as wait_for_reload:
1298
1406
  result = await self._upsert_automation(
1299
1407
  transformed_config, identifier, resolved_id
1300
1408
  )
1301
- _note_reload_outcome(result, await wait_for_reload(), enabled)
1409
+ reloaded = await wait_for_reload()
1410
+ note_reload_outcome(
1411
+ result, reloaded, domain="automation", requested=enabled is not None
1412
+ )
1413
+ run_actions = _run_actions_once_reloaded(
1414
+ result, reloaded, run_actions, identifier or result.get("unique_id")
1415
+ )
1302
1416
  for warning in conflict_warnings:
1303
1417
  result.setdefault("warnings", []).append(warning)
1304
1418
  refetched = await self._get_automation_config_internal(identifier)
@@ -1317,12 +1431,13 @@ class AutomationConfigTools:
1317
1431
  "automation",
1318
1432
  )
1319
1433
 
1320
- entity_id = await self._apply_enabled_state(
1434
+ entity_id = await self._apply_runtime_state(
1321
1435
  result,
1322
1436
  entity_id,
1323
1437
  enabled,
1324
1438
  wait,
1325
1439
  identifier=identifier or result.get("unique_id"),
1440
+ run_actions=run_actions,
1326
1441
  )
1327
1442
  _sync_post_write_automation_result(result, entity_id)
1328
1443
 
@@ -1358,6 +1473,8 @@ class AutomationConfigTools:
1358
1473
  resolved_id: str | None = None,
1359
1474
  detached_blueprint: str | None = None,
1360
1475
  enabled: bool | None = None,
1476
+ *,
1477
+ run_actions: bool = False,
1361
1478
  ) -> dict[str, Any]:
1362
1479
  """Execute config-replacement mode and return the tool response.
1363
1480
 
@@ -1371,18 +1488,25 @@ class AutomationConfigTools:
1371
1488
  is threaded to the upsert so it skips the redundant
1372
1489
  re-resolve; None falls back to resolving inside the REST client.
1373
1490
  """
1374
- async with automation_reload_waiter(
1375
- self._client, enabled=enabled is not None
1491
+ runtime_requested = enabled is not None or run_actions
1492
+ async with config_reload_waiter(
1493
+ self._client, "automation_reloaded", enabled=runtime_requested
1376
1494
  ) as wait_for_reload:
1377
1495
  result = await self._upsert_automation(config_dict, identifier, resolved_id)
1378
- _note_reload_outcome(result, await wait_for_reload(), enabled)
1496
+ reloaded = await wait_for_reload()
1497
+ note_reload_outcome(
1498
+ result, reloaded, domain="automation", requested=enabled is not None
1499
+ )
1500
+ run_actions = _run_actions_once_reloaded(
1501
+ result, reloaded, run_actions, identifier or result.get("unique_id")
1502
+ )
1379
1503
 
1380
1504
  for warning in conflict_warnings or []:
1381
1505
  result.setdefault("warnings", []).append(warning)
1382
1506
 
1383
1507
  post_write_identifier = identifier or result.get("unique_id")
1384
1508
  # A create already polled for the entity inside the upsert; with wait=True
1385
- # the resolver below polls again. Either way, _apply_enabled_state must
1509
+ # the resolver below polls again. Either way, _apply_runtime_state must
1386
1510
  # not start a further poll of its own.
1387
1511
  entity_already_polled = wait or bool(result.get("entity_not_verified"))
1388
1512
  entity_id = await _resolve_post_write_automation_entity(
@@ -1430,12 +1554,13 @@ class AutomationConfigTools:
1430
1554
  "automation",
1431
1555
  )
1432
1556
 
1433
- entity_id = await self._apply_enabled_state(
1557
+ entity_id = await self._apply_runtime_state(
1434
1558
  result,
1435
1559
  entity_id,
1436
1560
  enabled,
1437
1561
  wait,
1438
1562
  identifier=None if entity_already_polled else post_write_identifier,
1563
+ run_actions=run_actions,
1439
1564
  )
1440
1565
  _sync_post_write_automation_result(result, entity_id)
1441
1566