ha-mcp-dev 8.6.0.dev2827__tar.gz → 8.6.0.dev2833__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 (724) hide show
  1. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/PKG-INFO +1 -1
  2. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/pyproject.toml +4 -1
  3. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/pyproject.toml.orig +8 -4
  4. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +34 -21
  5. ha_mcp_dev-8.6.0.dev2833/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +536 -0
  6. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +2 -2
  7. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +1 -1
  8. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +14 -1
  9. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +10 -5
  10. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +1 -1
  11. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +1 -1
  12. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +6 -4
  13. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +15 -12
  14. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +2 -2
  15. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md → ha_mcp_dev-8.6.0.dev2833/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +7 -536
  16. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/server.py +7 -7
  17. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/strict_bps.py +2 -2
  18. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/best_practice_checker.py +21 -21
  19. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/best_practice_result.py +1 -1
  20. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/best_practice_variables.py +2 -2
  21. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_config_automations.py +4 -3
  22. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_config_scripts.py +7 -6
  23. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/util_helpers.py +2 -2
  24. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/skill_loader.py +2 -2
  25. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -99
  26. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -99
  27. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -63
  28. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/README.md +0 -117
  29. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/evals/area-target-over-entity-list/case.yaml +0 -49
  30. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/evals/arrive-home-automation/case.yaml +0 -41
  31. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/evals/assist-shortcut-card/case.yaml +0 -37
  32. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/evals/avg-temperature/case.yaml +0 -50
  33. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/evals/backup-deletion-confirmation/case.yaml +0 -52
  34. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/evals/blueprint-authoring/case.yaml +0 -83
  35. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/evals/button-event-entity/case.yaml +0 -61
  36. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/evals/device-id-trigger-migration/case.yaml +0 -57
  37. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/evals/helper-flow-fields-not-platform-yaml/case.yaml +0 -72
  38. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/evals/media-player-song/case.yaml +0 -52
  39. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/evals/motion-light-automation-mode/case.yaml +0 -52
  40. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/evals/rename-entity-impact-analysis/case.yaml +0 -54
  41. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/evals/template-attributes-yaml-exception/case.yaml +0 -65
  42. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/evals/timer-finished-automation/case.yaml +0 -49
  43. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/evals/vacuum-last-clean/case.yaml +0 -54
  44. ha_mcp_dev-8.6.0.dev2827/src/ha_mcp/resources/skills-vendor/scripts/check_eval_cases.py +0 -324
  45. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/LICENSE +0 -0
  46. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/README.md +0 -0
  47. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/__init__.py +0 -0
  48. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/__main__.py +0 -0
  49. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_pypi_marker +0 -0
  50. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_rich_compat.py +0 -0
  51. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/__init__.py +0 -0
  52. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  53. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  54. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  55. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  56. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  57. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  58. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  59. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  60. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  61. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  62. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  63. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  64. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  65. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  66. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  67. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  68. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  69. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  70. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  71. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  72. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  73. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  74. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  75. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  76. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  77. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  78. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  79. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  80. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  81. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  82. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  83. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  84. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  85. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  86. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  87. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  88. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  89. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  90. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  91. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  92. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  93. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  94. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  95. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  96. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  97. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  98. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  99. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  100. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  101. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  102. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  103. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  104. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  105. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  106. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  107. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  108. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  109. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  110. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  111. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  112. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  113. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  114. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  115. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  116. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  117. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  118. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  119. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  120. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  121. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  122. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  123. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  124. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  125. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  126. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  127. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  128. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  129. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  130. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  131. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  132. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  133. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  134. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  135. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  136. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  137. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  138. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  139. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  140. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  141. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  142. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  143. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  144. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  145. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  146. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  147. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  148. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  149. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  150. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  151. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  152. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  153. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  154. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  155. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  156. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  157. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  158. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  159. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  160. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  161. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  162. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  163. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  164. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  165. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  166. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  167. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  168. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  169. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  170. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  171. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  172. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  173. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  174. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  175. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  176. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  177. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  178. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  179. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  180. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  181. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  182. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  183. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  184. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  185. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  186. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  187. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  188. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  189. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  190. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  191. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  192. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  193. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  194. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  195. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  196. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  197. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  198. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  199. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  200. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  201. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  202. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  203. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  204. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  205. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  206. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  207. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  208. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  209. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  210. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  211. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  212. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  213. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  214. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  215. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  216. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  217. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  218. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  219. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  220. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  221. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  222. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  223. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  224. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  225. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  226. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  227. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  228. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  229. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  230. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  231. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  232. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  233. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  234. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  235. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  236. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  237. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  238. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  239. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  240. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  241. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  242. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  243. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  244. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  245. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  246. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  247. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  248. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  249. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  250. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  251. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  252. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  253. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  254. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  255. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  256. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  257. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  258. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  259. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  260. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  261. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  262. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  263. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  264. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  265. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  266. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  267. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  268. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  269. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  270. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  271. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  272. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  273. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  274. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  275. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  276. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  277. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  278. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  279. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  280. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  281. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  282. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  283. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  284. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  285. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  286. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  287. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  288. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  289. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  290. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  291. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  292. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  293. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  294. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  295. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  296. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  297. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  298. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  299. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  300. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  301. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  302. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  303. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  304. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  305. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  306. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  307. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  308. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  309. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  310. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  311. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  312. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  313. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  314. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  315. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  316. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  317. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  318. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  319. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  320. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  321. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  322. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  323. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  324. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  325. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  326. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  327. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  328. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  329. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  330. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  331. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  332. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  333. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  334. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  335. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  336. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  337. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  338. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  339. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  340. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  341. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  342. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  343. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  344. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  345. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  346. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  347. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  348. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  349. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  350. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  351. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  352. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  353. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  354. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  355. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  356. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  357. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  358. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  359. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  360. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  361. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  362. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  363. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  364. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  365. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  366. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  367. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  368. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  369. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  370. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  371. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  372. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  373. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  374. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  375. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  376. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  377. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  378. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  379. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  380. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  381. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  382. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  383. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  384. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  385. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  386. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  387. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  388. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  389. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  390. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  391. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  392. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  393. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  394. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  395. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  396. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  397. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  398. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  399. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  400. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  401. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  402. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  403. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  404. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  405. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  406. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  407. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  408. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  409. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  410. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  411. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  412. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  413. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  414. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  415. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  416. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  417. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  418. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  419. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  420. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  421. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  422. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  423. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  424. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  425. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  426. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  427. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  428. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  429. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  430. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  431. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  432. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  433. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  434. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  435. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  436. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  437. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  438. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  439. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  440. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  441. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  442. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  443. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  444. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  445. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  446. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  447. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  448. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  449. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  450. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  451. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  452. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  453. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  454. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  455. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  456. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  457. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  458. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  459. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  460. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  461. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  462. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/requirements.txt +0 -0
  463. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  464. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  465. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  466. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  467. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  468. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  469. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  470. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  471. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  472. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  473. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  474. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  475. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  476. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  477. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  478. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  479. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  480. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  481. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  482. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  483. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  484. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  485. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  486. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  487. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  488. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  489. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  490. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  491. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  492. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  493. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  494. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  495. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  496. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  497. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  498. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  499. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  500. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  501. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  502. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  503. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  504. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  505. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  506. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  507. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  508. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  509. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  510. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  511. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  512. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  513. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  514. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  515. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  516. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  517. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  518. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  519. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/_version.py +0 -0
  520. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/auth/__init__.py +0 -0
  521. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/auth/consent_form.py +0 -0
  522. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/auth/oidc_compat.py +0 -0
  523. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/auth/provider.py +0 -0
  524. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/backup_manager.py +0 -0
  525. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/browser_landing.py +0 -0
  526. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/client/__init__.py +0 -0
  527. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/client/admin_routes.py +0 -0
  528. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/client/rest_client.py +0 -0
  529. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/client/supervisor_client.py +0 -0
  530. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/client/websocket_client.py +0 -0
  531. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/client/websocket_listener.py +0 -0
  532. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/config.py +0 -0
  533. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  534. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  535. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  536. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  537. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  538. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  539. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/errors.py +0 -0
  540. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/ha_request_queue.py +0 -0
  541. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  542. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/http_transport.py +0 -0
  543. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/llm_exposure.py +0 -0
  544. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/log_filters.py +0 -0
  545. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/policy/__init__.py +0 -0
  546. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/policy/approval_queue.py +0 -0
  547. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/policy/decision_pin.py +0 -0
  548. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/policy/decisions.py +0 -0
  549. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/policy/editing.py +0 -0
  550. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/policy/evaluator.py +0 -0
  551. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/policy/events.py +0 -0
  552. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/policy/handlers.py +0 -0
  553. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/policy/middleware.py +0 -0
  554. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/policy/model.py +0 -0
  555. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/policy/persistence.py +0 -0
  556. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/policy/value_sources.py +0 -0
  557. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/py.typed +0 -0
  558. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/read_only.py +0 -0
  559. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/redaction.py +0 -0
  560. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/renamed_tools.py +0 -0
  561. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  562. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  563. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  564. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  565. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  566. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/server_lifespan.py +0 -0
  567. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/__init__.py +0 -0
  568. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  569. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  570. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  571. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  572. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  573. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  574. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  575. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  576. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  577. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  578. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/_theme.py +0 -0
  579. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  580. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  581. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  582. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  583. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  584. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  585. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  586. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  587. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  588. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  589. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  590. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  591. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  592. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  593. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  594. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  595. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  596. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  597. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/settings.css +0 -0
  598. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/settings.html +0 -0
  599. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/settings_ui/settings.js +0 -0
  600. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/smoke_test.py +0 -0
  601. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  602. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tool_dispatch.py +0 -0
  603. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/__init__.py +0 -0
  604. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/auto_backup.py +0 -0
  605. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/backup.py +0 -0
  606. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  607. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  608. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/blueprint_write.py +0 -0
  609. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/bulk_selector.py +0 -0
  610. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/component_api.py +0 -0
  611. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/component_config_entries.py +0 -0
  612. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/component_config_reads.py +0 -0
  613. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  614. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/component_devices.py +0 -0
  615. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/component_registries.py +0 -0
  616. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  617. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  618. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  619. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  620. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  621. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  622. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
  623. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  624. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  625. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
  626. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/device_control.py +0 -0
  627. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/entity_registration.py +0 -0
  628. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  629. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/hacs_registration.py +0 -0
  630. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/helpers.py +0 -0
  631. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
  632. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/log_common.py +0 -0
  633. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/log_sources.py +0 -0
  634. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  635. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  636. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/radio/__init__.py +0 -0
  637. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/radio/base.py +0 -0
  638. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/radio/matter.py +0 -0
  639. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/radio/thread.py +0 -0
  640. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  641. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/radio/zwave.py +0 -0
  642. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/reference_validator.py +0 -0
  643. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/registry.py +0 -0
  644. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  645. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/scene_discovery.py +0 -0
  646. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  647. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  648. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  649. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  650. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  651. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  652. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  653. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  654. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  655. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  656. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  657. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_addons.py +0 -0
  658. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_areas.py +0 -0
  659. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  660. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  661. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  662. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_calendar.py +0 -0
  663. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_camera.py +0 -0
  664. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_categories.py +0 -0
  665. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_code.py +0 -0
  666. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  667. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  668. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  669. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  670. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_dev.py +0 -0
  671. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_energy.py +0 -0
  672. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_entities.py +0 -0
  673. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  674. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_groups.py +0 -0
  675. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_hacs.py +0 -0
  676. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_history.py +0 -0
  677. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_integrations.py +0 -0
  678. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_labels.py +0 -0
  679. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_logs.py +0 -0
  680. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_radio.py +0 -0
  681. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_registry.py +0 -0
  682. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_resources.py +0 -0
  683. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_search.py +0 -0
  684. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  685. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_service.py +0 -0
  686. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_services.py +0 -0
  687. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_system.py +0 -0
  688. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_themes.py +0 -0
  689. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_todo.py +0 -0
  690. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_traces.py +0 -0
  691. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_updates.py +0 -0
  692. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_utility.py +0 -0
  693. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  694. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  695. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  696. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/tools_zones.py +0 -0
  697. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/tools/validation_middleware.py +0 -0
  698. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/transforms/__init__.py +0 -0
  699. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/transforms/categorized_search.py +0 -0
  700. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/transforms/component_search.py +0 -0
  701. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  702. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  703. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/transport_security.py +0 -0
  704. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/update_check.py +0 -0
  705. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/__init__.py +0 -0
  706. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/config_hash.py +0 -0
  707. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/config_write_lock.py +0 -0
  708. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  709. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/data_paths.py +0 -0
  710. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  711. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/domain_handlers.py +0 -0
  712. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/entity_membership.py +0 -0
  713. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  714. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  715. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  716. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/operation_manager.py +0 -0
  717. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/python_sandbox.py +0 -0
  718. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  719. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/utils/usage_logger.py +0 -0
  720. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/visibility/__init__.py +0 -0
  721. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/visibility/enforcement.py +0 -0
  722. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/visibility/model.py +0 -0
  723. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/src/ha_mcp/visibility/persistence.py +0 -0
  724. {ha_mcp_dev-8.6.0.dev2827 → ha_mcp_dev-8.6.0.dev2833}/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: 8.6.0.dev2827
3
+ Version: 8.6.0.dev2833
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 = "8.6.0.dev2827"
7
+ version = "8.6.0.dev2833"
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"
@@ -88,6 +88,9 @@ ha-mcp-oidc = "ha_mcp.__main__:main_oidc"
88
88
  module-name = "ha_mcp"
89
89
  source-exclude = [
90
90
  "src/ha_mcp/resources/skills-vendor/.*",
91
+ "src/ha_mcp/resources/skills-vendor/*.md",
92
+ "src/ha_mcp/resources/skills-vendor/evals",
93
+ "src/ha_mcp/resources/skills-vendor/scripts",
91
94
  "src/ha_mcp/settings_ui/AGENTS.md",
92
95
  "src/ha_mcp/settings_ui/CLAUDE.md",
93
96
  ]
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "8.6.0.dev2827"
7
+ version = "8.6.0.dev2833"
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
@@ -110,11 +110,15 @@ ha-mcp-oidc = "ha_mcp.__main__:main_oidc"
110
110
  # Explicit because publish-dev.yml renames the project to ha-mcp-dev, which
111
111
  # would otherwise make the module name ha_mcp_dev.
112
112
  module-name = "ha_mcp"
113
- # Every file under src/ha_mcp ships unless excluded here. The skills
114
- # submodule's git and CI files and the settings UI's agent guide are not
115
- # read at runtime.
113
+ # Every file under src/ha_mcp ships unless excluded here. Of the skills
114
+ # submodule only skills/ and LICENSE ship; its evals, scripts, docs, git and
115
+ # CI files are not read at runtime, and neither is the settings UI's agent
116
+ # guide.
116
117
  source-exclude = [
117
118
  "src/ha_mcp/resources/skills-vendor/.*",
119
+ "src/ha_mcp/resources/skills-vendor/*.md",
120
+ "src/ha_mcp/resources/skills-vendor/evals",
121
+ "src/ha_mcp/resources/skills-vendor/scripts",
118
122
  "src/ha_mcp/settings_ui/AGENTS.md",
119
123
  "src/ha_mcp/settings_ui/CLAUDE.md",
120
124
  ]
@@ -23,13 +23,19 @@ description: >
23
23
  - Existing state changed with no recovery path
24
24
  - Jinja copy-pasted between templates
25
25
  metadata:
26
- version: "36"
26
+ version: "44"
27
27
  ---
28
28
 
29
29
  # Home Assistant Best Practices
30
30
 
31
31
  **Core principle:** Use native Home Assistant constructs wherever possible. Templates bypass validation, fail silently at runtime, and make debugging opaque.
32
32
 
33
+ **No tool reaches the HA API?** Do not stop to ask for access. If you can drive a browser on the HA web UI, make the change there, but first show the user the exact change and wait for their OK before you save: approving a click does not show them what it writes. Otherwise give the user the complete config to create in the UI (for an automation, the YAML for the editor's **Edit in YAML** mode; for a helper, its form fields), and name the entity IDs you assumed. Config that can only be written in YAML is edited with the File editor app (or in the config folder on a Container install): keep a copy of the file first, then check the configuration and run the matching reload in the **YAML** tab of **Tools** (named **Developer Tools** before 2026.8; restart if it isn't listed).
34
+
35
+ **A feature marked with a release (2026.5+) depends on the instance's version.** Read it before choosing: `version` in `GET /api/config`, or **Settings → About** in the UI. On that release or later, use the feature and do not offer the older way as an equal choice. If you cannot read the version, assume a current release and name the older fallback with the version it needs.
36
+
37
+ **Read the matching reference before you answer.** This page only summarizes the files in [Reference Files](#reference-files); the exact keys, fields and working examples are in them. Read every file whose row matches the task, and only those: do not load all reference files upfront.
38
+
33
39
  ## Decision Workflow
34
40
 
35
41
  Follow this sequence when creating any automation:
@@ -41,17 +47,21 @@ If your change affects entity IDs, display names, or cross-component references
41
47
  Steps 1-5 below apply to new config or pattern evaluation.
42
48
 
43
49
  ### 1. Check for a purpose-specific, then generic native, trigger/condition
44
- Since 2026.7 the default building blocks are purpose-specific triggers/conditions — `<domain>.<name>` keys (motion detected, battery low, door opened) with area/floor/label targets. Check for one that matches the intent first, then a generic native trigger/condition, and only then a template. See [automation-patterns #purpose-specific-triggers--conditions-default-since-20267](references/automation-patterns.md#purpose-specific-triggers--conditions-default-since-20267).
50
+ Since 2026.7 the default building blocks are purpose-specific triggers/conditions — `<domain>.<name>` keys (motion detected, battery low, door opened) with area/floor/label targets. Check for one that matches the intent first, then a generic native trigger/condition, and only then a template. Read [triggers-and-conditions #purpose-specific-triggers--conditions-default-since-20267](references/triggers-and-conditions.md#purpose-specific-triggers--conditions-default-since-20267) before writing the trigger.
51
+
52
+ A purpose-specific trigger takes `entity_id` in its `target:` as well, so one known sensor is not a reason to fall back to `trigger: state`. Write the automation with the purpose-specific trigger; do not offer it only as an optional upgrade.
45
53
 
46
54
  **Common substitutions:**
55
+ - `trigger: state` on a motion, occupancy or door `binary_sensor` → `motion.detected`/`motion.cleared`, `occupancy.detected`/`occupancy.cleared` or `door.opened`/`door.closed` with `target: {entity_id: ...}`, or `area_id` when the area is known
47
56
  - List of individual sensor entities in a trigger → one purpose-specific trigger with an area/floor/label `target:`
57
+ - `delay` after `motion.detected` for "no motion anywhere for N minutes" → `motion.cleared` with `options: {behavior: all, for: ...}`, which fires once every targeted sensor has been clear that long (`unavailable` and `unknown` sensors are left out of the count)
48
58
  - `{{ states('x') | float > 25 }}` → `numeric_state` condition with `above: 25`
49
59
  - `{{ is_state('x', 'on') and is_state('y', 'on') }}` → `condition: and` with state conditions
50
60
  - `{{ now().hour >= 9 }}` → `condition: time` with `after: "09:00:00"`
51
61
  - `wait_template: "{{ is_state(...) }}"` → `wait_for_trigger` with state trigger (caveat: different behavior when state is already true — see [safe-refactoring #trigger-restructuring](references/safe-refactoring.md#trigger-restructuring))
52
62
 
53
63
  ### 2. Check for built-in helper or Template Helper
54
- Before creating a template sensor, check [helper-selection](references/helper-selection.md).
64
+ Read [helper-selection](references/helper-selection.md) before creating a template sensor.
55
65
 
56
66
  **Common substitutions:**
57
67
  - Sum/average multiple sensors → `min_max` integration
@@ -70,7 +80,7 @@ the config needs a key the flow has no field for — trigger-based templates and
70
80
  are the common ones. Then use managed YAML editing ([yaml-only-integrations](references/yaml-only-integrations.md)), not a hand-edit.
71
81
 
72
82
  ### 3. Select correct automation mode
73
- Default `single` mode is often wrong. See [automation-patterns #automation-modes](references/automation-patterns.md#automation-modes).
83
+ Default `single` mode is often wrong. See [automation-actions #automation-modes](references/automation-actions.md#automation-modes).
74
84
 
75
85
  | Scenario | Mode |
76
86
  |----------|------|
@@ -85,11 +95,11 @@ Default `single` mode is often wrong. See [automation-patterns #automation-modes
85
95
  **Exception:** Zigbee2MQTT autodiscovered device triggers are acceptable.
86
96
 
87
97
  ### 5. For buttons and remotes
88
- - **Any integration exposing an `event.*` entity:** Use `event.received` targeting that entity — a normal entity, so it can be renamed and survives a re-add when the integration keeps a stable unique ID
98
+ - **Any integration exposing an `event.*` entity:** Use `event.received` targeting that entity (see the anti-pattern row below)
89
99
  - **ZHA:** No event entities — use an `event` trigger with `device_ieee` (persistent)
90
100
  - **Z2M:** Event entities are experimental and off by default — use a `device` trigger (autodiscovered) or `mqtt` trigger
91
101
 
92
- See [device-control #buttonremote-patterns](references/device-control.md#buttonremote-patterns).
102
+ Read [device-control #buttonremote-patterns](references/device-control.md#buttonremote-patterns) before writing the trigger.
93
103
 
94
104
  ---
95
105
 
@@ -97,28 +107,30 @@ See [device-control #buttonremote-patterns](references/device-control.md#buttonr
97
107
 
98
108
  | Anti-pattern | Use instead | Why | Reference |
99
109
  |--------------|-------------|-----|-----------|
100
- | `condition: template` with `float > 25` | `condition: numeric_state` | Validated at load, not runtime | [automation-patterns #native-conditions](references/automation-patterns.md#native-conditions) |
101
- | `wait_template: "{{ is_state(...) }}"` | `wait_for_trigger` with state trigger | Event-driven, not polling; waits for *change* (see [safe-refactoring #trigger-restructuring](references/safe-refactoring.md#trigger-restructuring) for semantic differences) | [automation-patterns #wait-actions](references/automation-patterns.md#wait-actions) |
110
+ | `condition: template` with `float > 25` | `condition: numeric_state` | Validated at load, not runtime | [triggers-and-conditions #native-conditions](references/triggers-and-conditions.md#native-conditions) |
111
+ | `wait_template: "{{ is_state(...) }}"` | `wait_for_trigger` with state trigger | Event-driven, not polling; waits for *change* (see [safe-refactoring #trigger-restructuring](references/safe-refactoring.md#trigger-restructuring) for semantic differences) | [automation-actions #wait-actions](references/automation-actions.md#wait-actions) |
102
112
  | `device_id` in triggers | `entity_id` (or `device_ieee` for ZHA) | device_id breaks on re-add | [device-control #entity-id-vs-device-id](references/device-control.md#entity-id-vs-device-id) |
103
- | `numeric_state` trigger driving a costly action, unguarded | Condition rejecting `unavailable`/`unknown` in `trigger.from_state` | A restart or blip re-arms the trigger, so an unchanged value fires with no crossing (the guard also drops real crossings) | [automation-patterns #unavailable-arms-a-numeric-state-trigger](references/automation-patterns.md#unavailable-arms-a-numeric-state-trigger) |
104
- | `mode: single` for motion lights | `mode: restart` | Re-triggers must reset the timer | [automation-patterns #automation-modes](references/automation-patterns.md#automation-modes) |
105
- | `enabled: false` as a top-level key in `automations.yaml` | `automation.turn_off` (temporary) or entity registry disable (permanent) | Not a valid top-level key — rejected during schema validation; automation loads as `unavailable` | [automation-patterns #disabling-automations](references/automation-patterns.md#disabling-automations) |
113
+ | `event` trigger on an integration's bus event (e.g. `hue_event`) for a button that has an `event.*` entity | `event.received` targeting that entity, with values read from its `event_types` attribute | The entity can be renamed and survives a re-add when the integration keeps a stable unique ID; bus event data differs per integration | [device-control #buttonremote-patterns](references/device-control.md#buttonremote-patterns) |
114
+ | `numeric_state` trigger driving a costly action, unguarded | Condition rejecting `unavailable`/`unknown` in `trigger.from_state` | A restart or blip re-arms the trigger, so an unchanged value fires with no crossing (the guard also drops real crossings) | [triggers-and-conditions #unavailable-arms-a-numeric-state-trigger](references/triggers-and-conditions.md#unavailable-arms-a-numeric-state-trigger) |
115
+ | `mode: single` for motion lights | `mode: restart` | Re-triggers must reset the timer | [automation-actions #automation-modes](references/automation-actions.md#automation-modes) |
116
+ | `enabled: false` as a top-level key in `automations.yaml` | `automation.turn_off` (temporary) or entity registry disable (permanent) | Not a valid top-level key — rejected during schema validation; automation loads as `unavailable` | [automation-actions #disabling-automations](references/automation-actions.md#disabling-automations) |
106
117
  | Template sensor for sum/mean | `min_max` helper | Declarative, handles unavailable states | [helper-selection #numeric-aggregation](references/helper-selection.md#numeric-aggregation) |
107
118
  | Template binary sensor with threshold | `threshold` helper | Built-in hysteresis support | [helper-selection #threshold](references/helper-selection.md#threshold) |
108
119
  | Renaming entity IDs without impact analysis | Follow [safe-refactoring](references/safe-refactoring.md) workflow | Renames break dashboards, scripts, scenes, Config-Entry data, and storage dashboards silently | [safe-refactoring #entity-renames](references/safe-refactoring.md#entity-renames) |
109
120
  | Renaming members of Config-Entry-based groups (UI groups) without updating membership | Update group membership via Options Flow after the registry rename | The entity registry rename does not update `options.entities` in the Config Entry — group silently breaks | [safe-refactoring #config-entry-groups](references/safe-refactoring.md#config-entry-groups) |
110
- | Renaming entities used by Config-Entry integrations (Better/Generic Thermostat, Min/Max, Threshold) without patching Config-Entry data | Scan and patch `core.config_entries` `data`+`options` fields | These integrations store entity_ids in Config Entry — not updated by entity registry renames | [safe-refactoring #config-entry-data--blind-spots-for-entity-registry-renames](references/safe-refactoring.md#config-entry-data--blind-spots-for-entity-registry-renames) |
121
+ | Renaming entities used by Min/Max helpers or custom Config-Entry integrations (e.g. Better Thermostat) without checking their Config-Entry data | Scan the config entries' `data`+`options`; re-select the renamed entity in the Min/Max Options Flow. An integration that keeps it in `data` (Better Thermostat) has no API fix: tell the user and take a full backup before the rename | They store entity_ids in the Config Entry, and a registry rename does not update them; single-source helpers such as Threshold (since 2025.6) and Generic Thermostat update themselves | [safe-refactoring #config-entry-data--blind-spots-for-entity-registry-renames](references/safe-refactoring.md#config-entry-data--blind-spots-for-entity-registry-renames) |
111
122
  | `template:` sensor/binary sensor in YAML | Template Helper via the config flow | A flow helper reloads in place and stays UI-editable; a `template:` entry needs a config reload and does not. Exceptions are real — trigger-based templates and `attributes:` have no flow field | [helper-selection #template-helpers](references/helper-selection.md#template-helpers) |
112
123
  | Editing `.storage/` files or other HA internal state directly | Use the HA REST/WebSocket API to manage state and config entries | `.storage/` files are HA's internal state database; direct edits bypass validation, risk corruption, and can be silently overwritten by HA | — |
113
124
  | Writing raw YAML to `configuration.yaml` by hand for YAML-only integrations | Use managed YAML config editing with backup and validation | Unmanaged writes risk syntax errors, have no backup, and skip `check_config` — managed editing provides all three | [yaml-only-integrations](references/yaml-only-integrations.md) |
114
- | Generating YAML snippets for automations/scripts/scenes | Use the HA config API to create automations/scripts programmatically | API calls validate config, avoid syntax errors, and don't require manual file edits or restarts | [automation-patterns](references/automation-patterns.md), [examples.yaml](references/examples.yaml) |
125
+ | Generating YAML snippets for automations/scripts/scenes | Use the HA config API to create automations/scripts programmatically; with no API access, give the config for the UI editor instead | API calls validate config, avoid syntax errors, and don't require manual file edits or restarts | [triggers-and-conditions](references/triggers-and-conditions.md), [automation-actions](references/automation-actions.md), [examples.yaml](references/examples.yaml) |
115
126
  | Telling user to edit `configuration.yaml` for integrations | Direct user to Settings > Devices & Services in the HA UI | Most integrations are UI-configured; YAML integration config is rare and integration-specific | — |
116
127
  | Referring to HA "add-ons" | Use the term "Apps" | HA renamed add-ons to Apps in 2026.2 — "Apps are standalone applications that run alongside Home Assistant" | — |
117
- | `vacuum.send_command` with vendor room IDs | `vacuum.clean_area` with HA `area_id` (if segments are mapped) | Uses native HA areas, works across integrations — but requires segment-to-area mapping in entity settings first | [device-control #vacuum-control](references/device-control.md#vacuum-control) |
118
- | Using `color_temp` (mireds) in light actions | Use `color_temp_kelvin` | The `color_temp` parameter was removed in 2026.3; only Kelvin is supported | [device-control #lights](references/device-control.md#lights) |
119
- | Person/Device Tracker `entered_home`/`left_home` device triggers or `is_home`/`is_not_home` conditions | `state` trigger `to: home` / `to: not_home`, or `state` condition | These were removed in 2026.5 — state triggers and conditions are the correct replacements | [automation-patterns #presence-and-person-triggers-and-conditions-removed-in-20265](references/automation-patterns.md#presence-and-person-triggers-and-conditions-removed-in-20265) |
120
- | Entity list in a trigger where an area/floor/label target fits | Purpose-specific trigger with `target: {area_id: ...}` | Automation follows area membership as devices change — no stale entity lists | [automation-patterns #purpose-specific-triggers--conditions-default-since-20267](references/automation-patterns.md#purpose-specific-triggers--conditions-default-since-20267) |
121
- | Old purpose-specific keys (`battery.low`, `vacuum.docked`, `timer.time_remaining`, ...) or trigger `behavior: any`/`last` | Renamed 2026.7 keys (`battery.became_low`, ...) and `behavior: each`/`all` | Old keys no longer load; old behavior values raise a repair issue and face removal | [automation-patterns #purpose-specific-triggers--conditions-default-since-20267](references/automation-patterns.md#purpose-specific-triggers--conditions-default-since-20267) |
128
+ | `vacuum.send_command` with vendor room IDs | `vacuum.clean_area` with HA area IDs in `cleaning_area_id` (if segments are mapped) | Uses native HA areas, works across integrations — but requires segment-to-area mapping in entity settings first | [device-control #vacuum-control](references/device-control.md#vacuum-control) |
129
+ | Using `color_temp` (mireds) in light actions | Use `color_temp_kelvin` with the value converted: Kelvin = 1,000,000 ÷ mireds (500 mireds = 2000 K) | The `color_temp` parameter was removed in 2026.3; only Kelvin is supported, and HA accepts any positive number there, so a mireds value copied across is read as Kelvin (500 mireds becomes 500 K) | [device-control #lights](references/device-control.md#lights) |
130
+ | Saving states or attributes in `variables:`, or hard-coding values, to put devices back after a temporary change | `scene.create` with `snapshot_entities` before the change, then `scene.turn_on` on that scene | The snapshot keeps each entity's own state, including a light that was off, in one call; variables need a template per attribute and a restore step per entity | [scenes #snapshot--restore-scenecreate](references/scenes.md#snapshot--restore-scenecreate) |
131
+ | Person/Device Tracker `entered_home`/`left_home` device triggers or `is_home`/`is_not_home` conditions | `state` trigger `to: home` / `to: not_home`, or `state` condition | These were removed in 2026.5 — state triggers and conditions are the correct replacements | [triggers-and-conditions #presence-and-person-triggers-and-conditions-removed-in-20265](references/triggers-and-conditions.md#presence-and-person-triggers-and-conditions-removed-in-20265) |
132
+ | Entity list in a trigger where an area/floor/label target fits | Purpose-specific trigger with `target: {area_id: ...}` | Automation follows area membership as devices change — no stale entity lists | [triggers-and-conditions #purpose-specific-triggers--conditions-default-since-20267](references/triggers-and-conditions.md#purpose-specific-triggers--conditions-default-since-20267) |
133
+ | Old purpose-specific keys (`battery.low`, `vacuum.docked`, `timer.time_remaining`, ...) or trigger `behavior: any`/`last` | Renamed 2026.7 keys (`battery.became_low`, ...) and `behavior: each`/`all` (renamed 2026.6) | Old keys no longer load; old behavior values raise a repair issue and face removal | [triggers-and-conditions #purpose-specific-triggers--conditions-default-since-20267](references/triggers-and-conditions.md#purpose-specific-triggers--conditions-default-since-20267) |
122
134
  | AppDaemon: callbacks in `__init__`, uncancelled `run_in` timers, state in instance variables, hardcoded entity IDs | Register in `initialize()`, cancel before rescheduling, persist via `input_*` helpers, pass IDs through `self.args` | Each fails silently, resets on reload, or blocks reuse | [appdaemon #appdaemon-specific-anti-patterns](references/appdaemon.md#appdaemon-specific-anti-patterns) |
123
135
  | Blueprints: hardcoded entities, free text where a selector belongs, `!input` inside a template, missing `source_url` | Typed `!input` selectors; bind an input to `variables:` before templating it; always set `source_url` | Hardcoding defeats reuse, text lets typos through, and `!input` is a YAML tag rather than a template value | [blueprint-guide #common-pitfalls](references/blueprint-guide.md#common-pitfalls) |
124
136
  | Backups: full restore to undo one object edit, no backup before an irreversible operation (registry deletion, integration removal, Core/OS upgrade), calling an action "reversible" without naming its inverse | Roll the single object back; take the backup *before*; name the exact inverse or treat it as irreversible | A full restore reverts every unrelated change since and restarts HA; a backup taken afterward captures the damage | [backups #when-a-full-backup-earns-its-cost](references/backups.md#when-a-full-backup-earns-its-cost) |
@@ -130,17 +142,18 @@ See [device-control #buttonremote-patterns](references/device-control.md#buttonr
130
142
 
131
143
  ## Reference Files
132
144
 
133
- Read these when you need detailed information:
145
+ Read each file whose row matches the task before you answer:
134
146
 
135
147
  | File | When to read |
136
148
  |------|--------------|
137
149
  | [safe-refactoring](references/safe-refactoring.md) | Renaming entities or their display names, replacing helpers, restructuring automations, or any modification to existing config |
138
- | [automation-patterns](references/automation-patterns.md) | Writing triggers, conditions, waits, variables, or choosing automation modes; capturing action responses; documenting/annotating steps; disabling automations; `continue_on_error`, admin-only actions (`Unauthorized`) in scripts, stopping a sequence, repeat, if/then vs choose, parallel, trigger IDs |
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 |
139
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 |
140
153
  | [template-guidelines](references/template-guidelines.md) | Confirming templates ARE appropriate for a use case; sharing Jinja logic between templates with `custom_templates` macros |
141
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`) |
142
155
  | [device-control](references/device-control.md) | Writing actions, button/remote automations, or using target: |
143
- | [scenes](references/scenes.md) | Authoring or activating scenes; snapshot/restore patterns; snapshot-vs-script distinction |
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 |
144
157
  | [dashboard-guide](references/dashboard-guide.md) | Designing or modifying Lovelace dashboards — layout, view types, strategies, sections, cards, badges, CSS styling, HACS |
145
158
  | [dashboard-cards](references/dashboard-cards.md) | Looking up available card types or fetching card-specific documentation |
146
159
  | [domain-docs](references/domain-docs.md) | Looking up integration/domain documentation, or the dedicated doc page for a specific trigger, condition, or action |