ha-mcp-dev 9.0.0.dev3202__tar.gz → 9.0.0.dev3203__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 (811) hide show
  1. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/PKG-INFO +1 -1
  2. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/pyproject.toml +1 -1
  3. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/pyproject.toml.orig +1 -1
  4. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +3 -3
  5. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +96 -6
  6. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +21 -0
  7. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +1 -1
  8. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +17 -6
  9. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +53 -1
  10. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +2 -0
  11. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/LICENSE +0 -0
  12. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/README.md +0 -0
  13. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/__init__.py +0 -0
  14. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/__main__.py +0 -0
  15. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_pypi_marker +0 -0
  16. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_rich_compat.py +0 -0
  17. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/__init__.py +0 -0
  18. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  19. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  20. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  21. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  22. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  23. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  24. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  25. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  26. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  27. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  28. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  29. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  30. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  31. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  32. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  33. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  34. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  35. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  36. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  37. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev_security.py +0 -0
  38. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  39. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  40. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  41. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  42. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  43. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  44. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  45. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  46. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  47. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  48. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  49. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  50. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  51. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  52. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  53. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  54. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  55. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  56. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  57. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  58. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  59. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  60. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  61. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  62. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  63. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  64. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  65. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  66. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  67. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  68. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  69. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  70. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  71. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  72. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  73. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  74. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  75. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  76. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  77. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  78. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  79. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/mixins/skills.py +0 -0
  80. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  81. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  82. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  83. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  84. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  85. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  86. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  87. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  88. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  89. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  90. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  91. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  92. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  93. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  94. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  95. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  96. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  97. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  98. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  99. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  100. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  101. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  102. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  103. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  104. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  105. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  106. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  107. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  108. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  109. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  110. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  111. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  112. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  113. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  114. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  115. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  116. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  117. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +0 -0
  118. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  119. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  120. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  121. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  122. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  123. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  124. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  125. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  126. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  127. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  128. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  129. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  130. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  131. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  132. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  133. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  134. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  135. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  136. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  137. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  138. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  139. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  140. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  141. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  142. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  143. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  144. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  145. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  146. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  147. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  148. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  149. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  150. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  151. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  152. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  153. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  154. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  155. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  156. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  157. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  158. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  159. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  160. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  161. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  162. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  163. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  164. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  165. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  166. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  167. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  168. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  169. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  170. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  171. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  172. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  173. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  174. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  175. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  176. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  177. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  178. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  179. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  180. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  181. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  182. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  183. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  184. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  185. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  186. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  187. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  188. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  189. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  190. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/mixins/extensions.py +0 -0
  191. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  192. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  193. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  194. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  195. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  196. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  197. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  198. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  199. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  200. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  201. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  202. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  203. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  204. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  205. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  206. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  207. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  208. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  209. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  210. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  211. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  212. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  213. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  214. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  215. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  216. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  217. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  218. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  219. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  220. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  221. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  222. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  223. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  224. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  225. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  226. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  227. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  228. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  229. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  230. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  231. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  232. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  233. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  234. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  235. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  236. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  237. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  238. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  239. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/skills/__init__.py +0 -0
  240. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/skills/_constants.py +0 -0
  241. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/skills/_resources.py +0 -0
  242. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/skills/_snapshot.py +0 -0
  243. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/skills/_source.py +0 -0
  244. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/skills/client.py +0 -0
  245. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/skills/extension.py +0 -0
  246. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/skills/models.py +0 -0
  247. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  248. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  249. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  250. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  251. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  252. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  253. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  254. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  255. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  256. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  257. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  258. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  259. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  260. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  261. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  262. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  263. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  264. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  265. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  266. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  267. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  268. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  269. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  270. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  271. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  272. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  273. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  274. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  275. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  276. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  277. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  278. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  279. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  280. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  281. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  282. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  283. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  284. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  285. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  286. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  287. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  288. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  289. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  290. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  291. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  292. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  293. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  294. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  295. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  296. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  297. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  298. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  299. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  300. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  301. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  302. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  303. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  304. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  305. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  306. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  307. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  308. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  309. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  310. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  311. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  312. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  313. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  314. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  315. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  316. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  317. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  318. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  319. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  320. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  321. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  322. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  323. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  324. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  325. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  326. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  327. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  328. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  329. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  330. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  331. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  332. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  333. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  334. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  335. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  336. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  337. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  338. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  339. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  340. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  341. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  342. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  343. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  344. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  345. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  346. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  347. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  348. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  349. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  350. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  351. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  352. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  353. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  354. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  355. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  356. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  357. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  358. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  359. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  360. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  361. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  362. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  363. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  364. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  365. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  366. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  367. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  368. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  369. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  370. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  371. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  372. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  373. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  374. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  375. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  376. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  377. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  378. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  379. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  380. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  381. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  382. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  383. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  384. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  385. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  386. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  387. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  388. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  389. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  390. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  391. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  392. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  393. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  394. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  395. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  396. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  397. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  398. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  399. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  400. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  401. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  402. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  403. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  404. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/_request_clock.py +0 -0
  405. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  406. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  407. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  408. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  409. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  410. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  411. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  412. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  413. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  414. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  415. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  416. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  417. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  418. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  419. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  420. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  421. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  422. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  423. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  424. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  425. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  426. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  427. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  428. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  429. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  430. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  431. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  432. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  433. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  434. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  435. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  436. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  437. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  438. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  439. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  440. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  441. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/requirements.txt +0 -0
  442. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  443. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  444. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  445. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  446. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  447. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  448. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  449. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  450. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  451. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  452. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  453. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  454. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  455. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  456. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  457. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  458. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  459. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  460. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  461. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  462. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  463. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  464. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  465. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  466. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  467. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  468. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  469. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  470. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  471. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  472. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  473. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  474. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  475. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  476. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  477. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  478. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  479. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  480. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  481. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  482. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  483. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  484. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  485. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  486. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  487. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  488. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  489. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  490. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  491. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  492. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  493. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  494. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  495. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  496. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  497. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  498. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/_version.py +0 -0
  499. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/app_discovery.py +0 -0
  500. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/auth/__init__.py +0 -0
  501. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/auth/consent_form.py +0 -0
  502. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/auth/iss_stamp.py +0 -0
  503. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/auth/oidc_compat.py +0 -0
  504. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/auth/provider.py +0 -0
  505. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/backup_dashboards.py +0 -0
  506. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/backup_diff.py +0 -0
  507. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/backup_entity_ids.py +0 -0
  508. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/backup_helper_target.py +0 -0
  509. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/backup_integrations.py +0 -0
  510. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/backup_manager.py +0 -0
  511. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/backup_tags.py +0 -0
  512. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/backup_zones.py +0 -0
  513. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/browser_landing.py +0 -0
  514. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/client/__init__.py +0 -0
  515. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/client/admin_routes.py +0 -0
  516. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/client/error_log_journald.py +0 -0
  517. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/client/models.py +0 -0
  518. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/client/rest_client.py +0 -0
  519. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/client/supervisor_client.py +0 -0
  520. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/client/websocket_client.py +0 -0
  521. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/client/websocket_listener.py +0 -0
  522. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/config.py +0 -0
  523. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/config_backup.py +0 -0
  524. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/config_meta.py +0 -0
  525. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/config_overrides.py +0 -0
  526. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/config_registry.py +0 -0
  527. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/config_settings.py +0 -0
  528. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  529. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  530. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  531. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  532. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  533. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  534. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/errors.py +0 -0
  535. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/ha_request_queue.py +0 -0
  536. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  537. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/http_transport.py +0 -0
  538. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/image_info.py +0 -0
  539. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/llm_exposure.py +0 -0
  540. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/log_filters.py +0 -0
  541. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/policy/__init__.py +0 -0
  542. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/policy/approval_queue.py +0 -0
  543. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/policy/decision_pin.py +0 -0
  544. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/policy/decisions.py +0 -0
  545. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/policy/editing.py +0 -0
  546. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/policy/evaluator.py +0 -0
  547. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/policy/events.py +0 -0
  548. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/policy/handlers.py +0 -0
  549. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/policy/middleware.py +0 -0
  550. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/policy/model.py +0 -0
  551. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/policy/mrtr.py +0 -0
  552. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/policy/persistence.py +0 -0
  553. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/policy/server_channels.py +0 -0
  554. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/policy/value_sources.py +0 -0
  555. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/py.typed +0 -0
  556. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/read_only.py +0 -0
  557. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/redaction.py +0 -0
  558. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/renamed_tools.py +0 -0
  559. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  560. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  561. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  562. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  563. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  564. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  565. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  566. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  567. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  568. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  569. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/server.py +0 -0
  570. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/server_instructions.py +0 -0
  571. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/server_lifespan.py +0 -0
  572. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/server_tool_text.py +0 -0
  573. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/__init__.py +0 -0
  574. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  575. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  576. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  577. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/_handlers_oauth_callbacks.py +0 -0
  578. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  579. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  580. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  581. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  582. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  583. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  584. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  585. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/_theme.py +0 -0
  586. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  587. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  588. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  589. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  590. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  591. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  592. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  593. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  594. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  595. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  596. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  597. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  598. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  599. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  600. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  601. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  602. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  603. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  604. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/settings.css +0 -0
  605. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/settings.html +0 -0
  606. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
  607. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
  608. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
  609. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
  610. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
  611. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
  612. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
  613. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
  614. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
  615. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/settings_ui/settings_js/10_oauth_callbacks.js +0 -0
  616. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/smoke_test.py +0 -0
  617. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  618. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/strict_bps.py +0 -0
  619. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tool_dispatch.py +0 -0
  620. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/__init__.py +0 -0
  621. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/addon_connection_hints.py +0 -0
  622. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/area_messages.py +0 -0
  623. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/auto_backup.py +0 -0
  624. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/backup.py +0 -0
  625. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/backup_access.py +0 -0
  626. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/backup_on_demand.py +0 -0
  627. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  628. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/best_practice_result.py +0 -0
  629. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  630. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  631. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  632. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/blueprint_write.py +0 -0
  633. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/bug_report_config.py +0 -0
  634. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/bug_report_templates.py +0 -0
  635. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/bulk_selector.py +0 -0
  636. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/coercion.py +0 -0
  637. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/component_api.py +0 -0
  638. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/component_config_entries.py +0 -0
  639. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/component_config_reads.py +0 -0
  640. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  641. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/component_devices.py +0 -0
  642. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/component_helper_collections.py +0 -0
  643. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/component_registries.py +0 -0
  644. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  645. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_entry_backup.py +0 -0
  646. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  647. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  648. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
  649. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  650. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  651. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  652. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
  653. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  654. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_file_visibility.py +0 -0
  655. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
  656. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
  657. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_helpers/create.py +0 -0
  658. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
  659. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
  660. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_helpers/icon_route.py +0 -0
  661. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
  662. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
  663. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
  664. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
  665. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_helpers/update.py +0 -0
  666. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
  667. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
  668. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_write_errors.py +0 -0
  669. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/config_write_helpers.py +0 -0
  670. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/core_contract.py +0 -0
  671. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/dashboard_card_describe.py +0 -0
  672. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  673. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
  674. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/dev_backup.py +0 -0
  675. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/device_control.py +0 -0
  676. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/device_enrichment.py +0 -0
  677. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
  678. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/energy_preferences.py +0 -0
  679. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
  680. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/entity_registration.py +0 -0
  681. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/entity_removal.py +0 -0
  682. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/entity_update_fields.py +0 -0
  683. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  684. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/flow_helper_lookup.py +0 -0
  685. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/hacs_registration.py +0 -0
  686. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/helper_flows.py +0 -0
  687. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/helpers.py +0 -0
  688. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/history_response.py +0 -0
  689. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/integration_entry_state.py +0 -0
  690. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
  691. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/log_common.py +0 -0
  692. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/log_sources.py +0 -0
  693. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  694. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/log_sources_logbook.py +0 -0
  695. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  696. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/radio/__init__.py +0 -0
  697. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/radio/base.py +0 -0
  698. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/radio/matter.py +0 -0
  699. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/radio/thread.py +0 -0
  700. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  701. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/radio/zwave.py +0 -0
  702. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
  703. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/recorder_errors.py +0 -0
  704. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/reference_validator.py +0 -0
  705. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/registry.py +0 -0
  706. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  707. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/response_helpers.py +0 -0
  708. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/scene_discovery.py +0 -0
  709. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/search/__init__.py +0 -0
  710. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/search/base.py +0 -0
  711. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/search/component.py +0 -0
  712. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/search/entities.py +0 -0
  713. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/search/legacy.py +0 -0
  714. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/search/modes.py +0 -0
  715. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/search/overview.py +0 -0
  716. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/search/response.py +0 -0
  717. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/search/state.py +0 -0
  718. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/server_version.py +0 -0
  719. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  720. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  721. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  722. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  723. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  724. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  725. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  726. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  727. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  728. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  729. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/statistics_calendar.py +0 -0
  730. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/statistics_helpers.py +0 -0
  731. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/statistics_resets.py +0 -0
  732. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/system_restart.py +0 -0
  733. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tool_hints.py +0 -0
  734. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  735. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_addons.py +0 -0
  736. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_areas.py +0 -0
  737. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  738. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  739. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  740. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_calendar.py +0 -0
  741. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_camera.py +0 -0
  742. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_categories.py +0 -0
  743. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_code.py +0 -0
  744. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  745. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  746. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  747. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  748. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  749. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  750. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_dev.py +0 -0
  751. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_energy.py +0 -0
  752. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_entities.py +0 -0
  753. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  754. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_groups.py +0 -0
  755. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_hacs.py +0 -0
  756. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_history.py +0 -0
  757. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_integrations.py +0 -0
  758. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_labels.py +0 -0
  759. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_logs.py +0 -0
  760. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_radio.py +0 -0
  761. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_registry.py +0 -0
  762. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_resources.py +0 -0
  763. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_search.py +0 -0
  764. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  765. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_service.py +0 -0
  766. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_services.py +0 -0
  767. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_system.py +0 -0
  768. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_themes.py +0 -0
  769. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_todo.py +0 -0
  770. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_traces.py +0 -0
  771. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_updates.py +0 -0
  772. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_utility.py +0 -0
  773. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  774. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  775. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  776. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/tools_zones.py +0 -0
  777. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/util_helpers.py +0 -0
  778. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/validation_middleware.py +0 -0
  779. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/tools/ws_waiters.py +0 -0
  780. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/transforms/__init__.py +0 -0
  781. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/transforms/categorized_search.py +0 -0
  782. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/transforms/compact_params.py +0 -0
  783. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/transforms/component_helpers.py +0 -0
  784. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/transforms/component_search.py +0 -0
  785. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  786. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  787. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/transport_security.py +0 -0
  788. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/update_check.py +0 -0
  789. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/__init__.py +0 -0
  790. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/config_hash.py +0 -0
  791. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/config_write_lock.py +0 -0
  792. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  793. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/data_paths.py +0 -0
  794. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  795. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/domain_handlers.py +0 -0
  796. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/entity_membership.py +0 -0
  797. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  798. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  799. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  800. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/operation_manager.py +0 -0
  801. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/python_sandbox.py +0 -0
  802. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  803. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/skill_loader.py +0 -0
  804. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/utils/usage_logger.py +0 -0
  805. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/visibility/__init__.py +0 -0
  806. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/visibility/config_files.py +0 -0
  807. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/visibility/enforcement.py +0 -0
  808. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/visibility/identifier_aliases.py +0 -0
  809. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/visibility/model.py +0 -0
  810. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/visibility/persistence.py +0 -0
  811. {ha_mcp_dev-9.0.0.dev3202 → ha_mcp_dev-9.0.0.dev3203}/src/ha_mcp/visibility/resolver.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 9.0.0.dev3202
3
+ Version: 9.0.0.dev3203
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Keywords: mcp,home-assistant,ai,automation,smart-home
6
6
  Author: Julien
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.0.0.dev3202"
7
+ version = "9.0.0.dev3203"
8
8
  description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13,<3.15"
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.0.0.dev3202"
7
+ version = "9.0.0.dev3203"
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
@@ -23,7 +23,7 @@ description: >
23
23
  - Existing state changed with no recovery path
24
24
  - Jinja copy-pasted between templates
25
25
  metadata:
26
- version: "51"
26
+ version: "53"
27
27
  ---
28
28
 
29
29
  # Home Assistant Best Practices
@@ -148,14 +148,14 @@ Read each file whose row matches the task before you answer:
148
148
  |------|--------------|
149
149
  | [safe-refactoring](references/safe-refactoring.md) | Renaming entities or their display names, replacing helpers, restructuring automations, or any modification to existing config |
150
150
  | [triggers-and-conditions](references/triggers-and-conditions.md) | Writing an automation's triggers or conditions: purpose-specific and native triggers/conditions, `for:` durations, trigger IDs |
151
- | [automation-actions](references/automation-actions.md) | Writing the actions of an automation or script, or choosing its mode: waits, variables, capturing action responses, `continue_on_error`, admin-only actions (`Unauthorized`) in scripts, stopping a sequence, repeat, if/then vs choose, parallel; documenting/annotating steps; disabling automations |
151
+ | [automation-actions](references/automation-actions.md) | Writing the actions of an automation or script, or choosing its mode: waits, variables, capturing action responses, `continue_on_error`, admin-only actions (`Unauthorized`) in scripts, stopping a sequence, repeat, if/then vs choose, parallel; documenting/annotating steps; disabling automations; [measuring elapsed time via `last_triggered`](references/automation-actions.md#measuring-elapsed-time-across-automations); [Mobile App `notify` action vs entity](references/automation-actions.md#notify-entity-vs-action-namespace) — `action not found` when an entity id is used as an action; [trace retention](references/automation-actions.md#trace-retention) — a frequent trigger pushes the run to debug out of the 5 stored traces |
152
152
  | [helper-selection](references/helper-selection.md) | Deciding whether to use a built-in helper vs template sensor — aggregation, rate of change, thresholds, time-in-state, counting/timing, scheduling, grouping, probabilistic inference, smoothing, climate, domain conversion, decision matrix |
153
153
  | [template-guidelines](references/template-guidelines.md) | Confirming templates ARE appropriate for a use case; sharing Jinja logic between templates with `custom_templates` macros |
154
154
  | [yaml-only-integrations](references/yaml-only-integrations.md) | Creating or editing YAML-only integrations that have no config flow (e.g. `command_line`, platform-based `mqtt`, `rest`) |
155
155
  | [device-control](references/device-control.md) | Writing actions, button/remote automations, or using target: |
156
156
  | [scenes](references/scenes.md) | Authoring or activating scenes; snapshot/restore patterns, including putting devices back the way they were after a temporary change; snapshot-vs-script distinction |
157
157
  | [dashboard-guide](references/dashboard-guide.md) | Designing or modifying Lovelace dashboards — layout, view types, strategies, sections, cards, badges, CSS styling, HACS |
158
- | [dashboard-cards](references/dashboard-cards.md) | Looking up built-in card types (core, energy, legacy) or where to read a card's fields |
158
+ | [dashboard-cards](references/dashboard-cards.md) | Looking up built-in card types (core, energy, legacy) or where to read a card's fields; [entities-card attribute rows](references/dashboard-cards.md#entities-card-attribute-rows-need-type-attribute) — a row with `attribute:` but no `type: attribute` shows the entity state, not the attribute |
159
159
  | [domain-docs](references/domain-docs.md) | Looking up integration/domain documentation, or the dedicated doc page for a specific trigger, condition, or action |
160
160
  | [examples.yaml](references/examples.yaml) | Need compound examples combining multiple best practices |
161
161
  | [appdaemon](references/appdaemon.md) | AppDaemon apps: when to use vs. native HA, app structure, actions, scheduling, error handling, safe refactoring impact |
@@ -14,6 +14,9 @@ This document covers the `actions:` block of automations and scripts, plus `mode
14
14
  9. [Parallel Actions](#parallel-actions)
15
15
  10. [Documenting Automations & Scripts](#documenting-automations--scripts)
16
16
  11. [Disabling Automations](#disabling-automations)
17
+ 12. [Measuring Elapsed Time Across Automations](#measuring-elapsed-time-across-automations)
18
+ 13. [Notify: Entity vs Action Namespace](#notify-entity-vs-action-namespace)
19
+ 14. [Trace Retention](#trace-retention)
17
20
 
18
21
  ---
19
22
 
@@ -76,7 +79,7 @@ Both waits set `wait.completed` and `wait.remaining`:
76
79
  - if:
77
80
  - "{{ not wait.completed }}"
78
81
  then:
79
- - action: notify.mobile_app
82
+ - action: notify.mobile_app_phone
80
83
  data:
81
84
  message: "Door still open after 5 minutes!"
82
85
  ```
@@ -112,7 +115,7 @@ automation:
112
115
  entity_id: binary_sensor.doorbell
113
116
  to: "on"
114
117
  actions:
115
- - action: notify.mobile_app
118
+ - action: notify.mobile_app_phone
116
119
  data:
117
120
  message: "Someone at the door!"
118
121
  ```
@@ -173,7 +176,7 @@ automation:
173
176
  for:
174
177
  minutes: 30
175
178
  actions:
176
- - action: notify.mobile_app
179
+ - action: notify.mobile_app_phone
177
180
  data:
178
181
  message: "{{ trigger.to_state.name }} has been open for 30 minutes"
179
182
  ```
@@ -201,7 +204,7 @@ actions:
201
204
  target:
202
205
  entity_id: light.patio
203
206
  continue_on_error: true # Automation proceeds even if this fails
204
- - action: notify.mobile_app
207
+ - action: notify.mobile_app_phone
205
208
  data:
206
209
  message: "Light action attempted"
207
210
  ```
@@ -302,7 +305,7 @@ When an automation declares both `trigger_variables:` and `variables:`, the two
302
305
  data:
303
306
  type: daily
304
307
  response_variable: forecast
305
- - action: notify.mobile_app
308
+ - action: notify.mobile_app_phone
306
309
  data:
307
310
  message: "High today: {{ forecast['weather.home'].forecast[0].temperature }}°"
308
311
  ```
@@ -329,7 +332,7 @@ Four repeat variants are available:
329
332
  entity_id: binary_sensor.door
330
333
  state: "on"
331
334
  sequence:
332
- - action: notify.mobile_app
335
+ - action: notify.mobile_app_phone
333
336
  data:
334
337
  message: "Door still open"
335
338
  - delay:
@@ -536,3 +539,90 @@ actions:
536
539
  - action: notify.notify
537
540
  enabled: false
538
541
  ```
542
+
543
+ ---
544
+
545
+ ## Measuring Elapsed Time Across Automations
546
+
547
+ `this.attributes.last_triggered` is captured at trigger time, before the run stamps `last_triggered` —
548
+ so it holds the **previous** run and is the right source for a cooldown condition. A live read
549
+ (`state_attr(this.entity_id, 'last_triggered')`) still sees the previous run while the automation-level
550
+ `variables:` and `conditions:` evaluate (they run before the action script), but "now" inside the
551
+ actions, where the script has stamped `last_triggered` as it started: there it measures the elapsed time
552
+ since *this* run started, not the interval since the previous run.
553
+
554
+ `trigger.from_state.last_changed` is the timestamp of the entity's most recent state entry, so it is
555
+ correct for a normal intended transition; it does not measure a logical interval across a restart or a
556
+ momentary `unavailable`/`unknown` blip, both of which re-stamp it (see
557
+ [triggers-and-conditions #for-duration-resets-on-restart-and-on-unavailable](triggers-and-conditions.md#for-duration-resets-on-restart-and-on-unavailable)).
558
+
559
+ For a duration across automations — how long since a *different* automation ran — read that
560
+ automation's `last_triggered`, or stamp a persistent `input_datetime` when the condition begins (the
561
+ restart-proof idiom that same section documents):
562
+
563
+ ```yaml
564
+ # RIGHT — duration since the companion automation last ran, not this one
565
+ - action: notify.mobile_app_phone
566
+ data:
567
+ message: >
568
+ {{ state_attr('automation.fridge_door_opened', 'last_triggered') is not none
569
+ and ((now() - state_attr('automation.fridge_door_opened', 'last_triggered')).total_seconds() | int) ~ ' s ago'
570
+ or 'never triggered' }}
571
+ ```
572
+
573
+ ---
574
+
575
+ ## Notify: Entity vs Action Namespace
576
+
577
+ Mobile App exposes each device twice, under two different `notify.*` names, and the two do not track
578
+ each other:
579
+
580
+ - **Entity** `notify.<device_name>` — the default entity id is the slugified device name (e.g.
581
+ `notify.iphone`), renameable, and callable only via the `notify.send_message` **action** (named
582
+ **service** before 2024.8) with `target:`.
583
+ - **Per-device action** `notify.mobile_app_<device_name>` — registered dynamically from the *slugified*
584
+ device name (e.g. `notify.mobile_app_iphone`), callable directly.
585
+
586
+ The entity id and the action name are different strings even at the defaults, so `notify.iphone` is not
587
+ an action: `action: notify.iphone` fails with "action not found" regardless of any rename. Renaming the
588
+ entity moves its id further, but the rule does not depend on it.
589
+
590
+ ```yaml
591
+ # WRONG — notify.iphone is the entity, not an action
592
+ - action: notify.iphone
593
+ data:
594
+ message: "door open"
595
+
596
+ # RIGHT — the slugified device-named action
597
+ - action: notify.mobile_app_iphone
598
+ data:
599
+ message: "door open"
600
+
601
+ # RIGHT — the entity, via notify.send_message
602
+ - action: notify.send_message
603
+ target:
604
+ entity_id: notify.iphone
605
+ data:
606
+ message: "door open"
607
+ ```
608
+
609
+ ---
610
+
611
+ ## Trace Retention
612
+
613
+ Home Assistant keeps the last 5 traces of each automation; a YAML automation without an `id` keeps
614
+ none. Every run uses one, including a run that stops at a condition or takes no `choose` branch, so a
615
+ frequent trigger pushes out the run you need to debug: a `time_pattern` with `minutes: "/5"` replaces
616
+ all five within 25 minutes.
617
+
618
+ If the poll only backs up a state change that a trigger could miss, replace it with change-driven
619
+ triggers (`homeassistant` `start`, a state trigger with only `to:`). Raise the limit only if the
620
+ poll has to stay on a schedule:
621
+
622
+ ```yaml
623
+ trace:
624
+ stored_traces: 20
625
+ ```
626
+
627
+ "Did not trigger" traces (a trigger noticed a change but did not start the automation) are kept
628
+ separately and never replace the traces of real runs.
@@ -49,3 +49,24 @@ Pick the first row that matches what you have. If your tools are behind a tool s
49
49
  | Embed external page | `iframe` |
50
50
  | Rich text / instructions | `markdown` |
51
51
  | Camera or image with overlays | `picture-elements` |
52
+
53
+ ## Entities Card: Attribute Rows Need `type: attribute`
54
+
55
+ In an `entities` card, a row carrying `attribute:` must also carry `type: attribute`. Without the
56
+ `type`, the card renders the entity's state and silently ignores the `attribute` key — no error, the
57
+ attribute simply never shows.
58
+
59
+ ```yaml
60
+ # WRONG — `attribute` is ignored, the row shows the state
61
+ type: entities
62
+ entities:
63
+ - entity: climate.thermostat
64
+ attribute: current_temperature
65
+
66
+ # RIGHT — `type: attribute` makes the row render the attribute
67
+ type: entities
68
+ entities:
69
+ - entity: climate.thermostat
70
+ type: attribute
71
+ attribute: current_temperature
72
+ ```
@@ -697,7 +697,7 @@ restore: true # default true
697
697
  actions:
698
698
  - delay:
699
699
  minutes: 5
700
- - action: notify.mobile_app
700
+ - action: notify.mobile_app_phone
701
701
  data:
702
702
  message: "Timer done!"
703
703
  ```
@@ -52,7 +52,7 @@ Messages that include runtime information:
52
52
 
53
53
  ```yaml
54
54
  actions:
55
- - action: notify.mobile_app
55
+ - action: notify.mobile_app_phone
56
56
  data:
57
57
  message: >
58
58
  {{ trigger.to_state.name }} has been {{ trigger.to_state.state }}
@@ -79,7 +79,7 @@ Using `trigger.` variables in automations:
79
79
 
80
80
  ```yaml
81
81
  actions:
82
- - action: notify.mobile_app
82
+ - action: notify.mobile_app_phone
83
83
  data:
84
84
  message: >
85
85
  {{ trigger.to_state.name }} changed from
@@ -404,7 +404,7 @@ For readability in complex templates:
404
404
 
405
405
  ```yaml
406
406
  actions:
407
- - action: notify.mobile_app
407
+ - action: notify.mobile_app_phone
408
408
  data:
409
409
  message: >
410
410
  {% if is_state('binary_sensor.door', 'on') %}
@@ -422,7 +422,7 @@ automation:
422
422
  - trigger: state
423
423
  entity_id: light.bedroom
424
424
  actions:
425
- - action: notify.mobile_app
425
+ - action: notify.mobile_app_phone
426
426
  data:
427
427
  message: >
428
428
  Light changed from {{ trigger.from_state.state }}
@@ -697,7 +697,7 @@ The `.jinja` file requires filesystem access to the config directory — there i
697
697
  | Create `config/custom_templates/` | HA does not create it; a missing directory is not an error, it just yields no macros |
698
698
  | Add a `*.jinja` file | Subdirectories are scanned too; only the `.jinja` extension is loaded |
699
699
  | Import by path relative to `custom_templates/` | `battery.jinja`, or `sensors/battery.jinja` for a file in a subdirectory |
700
- | Call `homeassistant.reload_custom_templates` | Admin action, no restart. Required after every edit — HA holds the sources in memory. `homeassistant.reload_all` includes it |
700
+ | Call `homeassistant.reload_custom_templates` | Admin action, no restart. Required after every edit — it swaps in the new sources but re-renders nothing; each consumer shows the change at its next render (template entity) or execution (automation/script). `homeassistant.reload_all` includes it |
701
701
 
702
702
 
703
703
  ```jinja
@@ -724,6 +724,17 @@ template:
724
724
 
725
725
  The import goes inside every template that uses the macro — imports are per-template, not global.
726
726
 
727
+ ### Reloading Custom Templates Macros
728
+
729
+ - `homeassistant.reload_custom_templates` re-reads the `*.jinja` files **and** invalidates cached
730
+ imports — it replaces the loader's sources and bumps its reload counter.
731
+ - `template.reload` does **not** reload `custom_templates` — it reloads the `template:` YAML entities
732
+ only.
733
+ - Reload swaps the sources but re-renders nothing — any consumer (a template entity, an automation, or
734
+ a script) shows the new macro at its next render or execution. For a template entity, check its
735
+ `last_reported`, not `last_changed`: the latter moves only when the state value changes, so a
736
+ same-value re-render looks like a failed reload.
737
+
727
738
  ### Imports Do Not Carry the Caller's Context
728
739
 
729
740
  The costliest mistake. An imported macro sees the template environment's globals, but none of the calling template's variables — a missing one renders empty and logs `Template variable warning: ... is undefined`, while attribute access on it (`trigger.entity_id`) fails the render outright.
@@ -777,7 +788,7 @@ For a real return value, give the macro a `returns` argument and convert it with
777
788
  | Symptom | Cause |
778
789
  |---------|-------|
779
790
  | `TemplateNotFound` | File is not under `config/custom_templates/`, does not end in `.jinja`, or `reload_custom_templates` has not run since it was added |
780
- | Edits have no effect | Sources are cached in memory — call `homeassistant.reload_custom_templates` |
791
+ | Edits have no effect | Call `homeassistant.reload_custom_templates`; the consumer shows the change at its next render/execution |
781
792
  | Empty output where a caller variable should be, or `'trigger' is undefined` in the log | Context does not cross an import — pass it as a macro argument |
782
793
 
783
794
  ---
@@ -260,7 +260,7 @@ conditions:
260
260
  **Prefer these over the generic triggers below when one matches the intent:**
261
261
 
262
262
  - **Targets, not entity lists.** Target an area/floor/label ("motion in the living room") and the automation follows area membership as sensors are added, swapped, or removed — no entity list to maintain. This also replaces most remaining legitimate uses of device triggers.
263
- - **No `unavailable`/`unknown` traps.** Each block handles unavailable states and event-entity re-fire quirks internally.
263
+ - **`unavailable`/`unknown` handled internally.** Each block handles unavailable states and event-entity re-fire quirks internally: a purpose-specific trigger on an entity's state skips a change that starts from `unavailable` (from `unknown` too, except on stateless entities such as buttons and events), which also means an edge through them is missed (see [`from:` misses a change that passes through `unavailable`](#from-misses-a-change-that-passes-through-unavailable)).
264
264
  - **Cross-entity-type.** "Door opened" fires whether the door is a contact sensor or a motorized cover.
265
265
  - **Integration-extensible.** Integrations register their own (e.g. `zwave_js.*`), so the catalog grows over time.
266
266
 
@@ -344,6 +344,58 @@ triggers:
344
344
  to: "on"
345
345
  ```
346
346
 
347
+ ### Recovery state trigger fires between `unavailable` and `unknown`
348
+
349
+ A recovery trigger — `from: [unavailable, unknown]` with no `to:` — fires on **every** transition
350
+ away from those two states, including `unavailable` → `unknown` and back, so it reports a false
351
+ recovery while the entity is still down. Add `not_to: [unavailable, unknown]` to fire only on a
352
+ return to a real state:
353
+
354
+ ```yaml
355
+ # WRONG — fires on unavailable → unknown and back, before the entity actually recovers
356
+ triggers:
357
+ - trigger: state
358
+ entity_id: sensor.link_quality
359
+ from: [unavailable, unknown]
360
+
361
+ # RIGHT — fires only when the entity reaches a real state
362
+ triggers:
363
+ - trigger: state
364
+ entity_id: sensor.link_quality
365
+ from: [unavailable, unknown]
366
+ not_to: [unavailable, unknown]
367
+ ```
368
+
369
+ ### `from:` misses a change that passes through `unavailable`
370
+
371
+ `from:` is compared with the state immediately before the change. When the entity drops out between
372
+ the two states you name (`on` → `unavailable` → `off`, a routine Wi-Fi or Zigbee blip), the second
373
+ step starts from `unavailable`, so a `from: "on"` / `to: "off"` trigger never fires and the
374
+ automation misses the edge. When missing it matters (switching something off once a sensor clears),
375
+ name only `to:`:
376
+
377
+ ```yaml
378
+ # WRONG — misses on → unavailable → off
379
+ triggers:
380
+ - trigger: state
381
+ entity_id: binary_sensor.motion_input
382
+ from: "on"
383
+ to: "off"
384
+
385
+ # RIGHT — fires on every change into off, including the return from unavailable
386
+ triggers:
387
+ - trigger: state
388
+ entity_id: binary_sensor.motion_input
389
+ to: "off"
390
+ ```
391
+
392
+ The `to:`-only form also fires when the entity comes back from `unavailable` already in the target
393
+ state, so guard the action with a state condition when a repeat run would do harm.
394
+
395
+ The state-based purpose-specific triggers `motion.cleared` and `occupancy.cleared` skip every change
396
+ that starts from `unavailable` or `unknown`, so they miss the same edge. Where it must not be missed, use
397
+ the `to:`-only state trigger in their place.
398
+
347
399
  ### Numeric State Trigger
348
400
 
349
401
  Fires when crossing a threshold.
@@ -35,3 +35,5 @@ A YAML edit changes nothing until the integration re-reads the file. Which actio
35
35
  - **`homeassistant.restart`** — the fallback for platform-style YAML, which has no reload action. **Confirm with the user first:** it briefly interrupts every automation and integration, not just the one you edited.
36
36
 
37
37
  Run `homeassistant.check_config` first. `homeassistant.restart` validates the config itself and refuses to restart when it fails, so the risk isn't a broken instance — it's that a reload silently leaves the old config running, or that you spend the user's restart to discover a typo.
38
+
39
+ `template.reload` does not reload `custom_templates` macros; call `homeassistant.reload_custom_templates` (see [Reloading Custom Templates Macros](template-guidelines.md#reloading-custom-templates-macros)).