ha-mcp-dev 9.2.0.dev3434__tar.gz → 9.2.0.dev3439__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 (852) hide show
  1. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/PKG-INFO +1 -1
  2. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/pyproject.toml +38 -24
  3. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/pyproject.toml.orig +55 -28
  4. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/__main__.py +1 -1
  5. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/backup_entity_ids.py +3 -3
  6. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/backup_zones.py +4 -3
  7. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/config_registry.py +2 -2
  8. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/bug_report_sources.py +12 -0
  9. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -30
  10. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_helpers/create.py +5 -14
  11. ha_mcp_dev-9.2.0.dev3439/src/ha_mcp/tools/config_helpers/icon_route.py +72 -0
  12. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_helpers/update.py +35 -12
  13. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_bug_report.py +7 -14
  14. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_config_helpers.py +1 -1
  15. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_search.py +2 -0
  16. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_system.py +2 -2
  17. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_updates.py +1 -1
  18. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_zones.py +99 -41
  19. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/update_check.py +167 -15
  20. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/usage_logger.py +11 -9
  21. ha_mcp_dev-9.2.0.dev3434/src/ha_mcp/tools/config_helpers/icon_route.py +0 -31
  22. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/LICENSE +0 -0
  23. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/README.md +0 -0
  24. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/__init__.py +0 -0
  25. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_pypi_marker +0 -0
  26. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_rich_compat.py +0 -0
  27. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/__init__.py +0 -0
  28. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  29. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  30. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  31. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  32. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  33. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  34. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  35. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  36. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  37. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  38. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  39. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  40. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  41. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  42. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  43. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  44. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  45. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  46. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  47. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev_security.py +0 -0
  48. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  49. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  50. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  51. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  52. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  53. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  54. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  55. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  56. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  57. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  58. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  59. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  60. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  61. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  62. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  63. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  64. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  65. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  66. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  67. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  68. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  69. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  70. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  71. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  72. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  73. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  74. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  75. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  76. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  77. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  78. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  79. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  80. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  81. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  82. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  83. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  84. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  85. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  86. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  87. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  88. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  89. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/mixins/skills.py +0 -0
  90. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  91. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  92. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  93. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  94. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  95. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  96. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  97. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  98. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  99. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  100. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  101. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  102. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  103. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  104. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  105. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  106. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  107. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  108. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  109. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  110. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  111. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  112. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  113. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  114. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  115. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  116. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  117. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  118. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  119. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  120. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  121. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  122. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  123. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  124. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  125. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  126. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  127. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +0 -0
  128. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  129. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  130. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  131. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  132. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  133. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  134. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  135. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  136. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  137. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  138. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  139. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  140. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  141. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  142. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  143. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  144. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  145. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  146. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  147. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  148. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  149. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  150. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  151. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  152. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  153. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  154. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  155. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  156. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  157. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  158. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  159. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  160. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  161. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  162. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  163. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  164. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  165. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  166. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  167. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  168. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  169. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  170. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  171. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  172. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  173. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  174. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  175. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  176. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  177. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  178. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  179. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  180. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  181. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  182. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  183. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  184. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  185. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  186. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  187. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  188. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  189. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  190. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  191. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  192. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  193. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  194. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  195. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  196. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  197. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  198. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  199. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  200. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/mixins/extensions.py +0 -0
  201. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  202. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  203. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  204. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  205. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  206. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  207. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  208. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  209. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  210. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  211. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  212. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  213. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  214. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  215. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  216. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  217. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  218. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  219. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  220. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  221. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  222. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  223. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  224. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  225. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  226. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  227. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  228. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  229. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  230. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  231. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  232. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  233. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  234. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  235. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  236. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  237. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  238. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  239. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  240. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  241. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  242. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  243. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  244. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  245. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  246. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  247. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  248. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  249. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/skills/__init__.py +0 -0
  250. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/skills/_constants.py +0 -0
  251. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/skills/_resources.py +0 -0
  252. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/skills/_snapshot.py +0 -0
  253. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/skills/_source.py +0 -0
  254. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/skills/client.py +0 -0
  255. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/skills/extension.py +0 -0
  256. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/skills/models.py +0 -0
  257. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  258. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  259. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  260. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  261. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  262. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  263. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  264. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  265. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  266. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  267. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  268. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  269. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  270. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  271. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  272. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  273. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  274. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  275. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  276. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  277. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  278. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  279. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  280. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  281. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  282. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  283. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  284. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  285. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  286. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  287. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  288. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  289. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  290. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  291. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  292. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  293. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  294. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  295. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  296. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  297. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  298. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  299. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  300. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  301. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  302. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  303. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  304. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  305. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  306. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  307. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  308. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  309. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  310. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  311. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  312. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  313. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  314. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  315. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  316. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  317. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  318. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  319. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  320. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  321. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  322. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  323. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  324. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  325. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  326. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  327. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  328. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  329. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  330. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  331. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  332. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  333. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  334. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  335. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  336. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  337. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  338. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  339. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  340. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  341. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  342. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  343. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  344. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  345. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  346. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  347. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  348. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  349. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  350. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  351. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  352. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  353. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  354. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  355. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  356. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  357. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  358. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  359. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  360. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  361. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  362. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  363. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  364. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  365. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  366. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  367. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  368. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  369. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  370. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  371. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  372. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  373. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  374. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  375. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  376. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  377. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  378. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  379. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  380. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  381. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  382. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  383. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  384. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  385. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  386. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  387. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  388. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  389. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  390. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  391. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  392. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  393. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  394. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  395. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  396. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  397. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  398. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  399. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  400. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  401. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  402. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  403. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  404. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  405. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  406. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  407. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  408. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  409. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  410. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  411. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  412. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  413. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  414. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/_request_clock.py +0 -0
  415. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  416. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  417. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  418. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  419. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  420. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  421. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  422. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  423. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  424. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  425. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  426. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  427. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  428. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  429. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  430. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  431. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  432. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  433. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  434. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  435. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  436. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  437. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  438. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  439. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  440. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  441. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  442. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  443. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  444. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  445. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  446. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  447. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  448. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  449. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  450. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  451. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/requirements.txt +0 -0
  452. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  453. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  454. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  455. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  456. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  457. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  458. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  459. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  460. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  461. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  462. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  463. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  464. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  465. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  466. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  467. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  468. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  469. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  470. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  471. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  472. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  473. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  474. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  475. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  476. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  477. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  478. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  479. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  480. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  481. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  482. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  483. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  484. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  485. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  486. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  487. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  488. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  489. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  490. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  491. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  492. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  493. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  494. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  495. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  496. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  497. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  498. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  499. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  500. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  501. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  502. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  503. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  504. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  505. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  506. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  507. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  508. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/_version.py +0 -0
  509. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/app_discovery.py +0 -0
  510. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/auth/__init__.py +0 -0
  511. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/auth/consent_form.py +0 -0
  512. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/auth/iss_stamp.py +0 -0
  513. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/auth/oidc_compat.py +0 -0
  514. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/auth/provider.py +0 -0
  515. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/backup_calendar.py +0 -0
  516. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/backup_dashboards.py +0 -0
  517. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/backup_diff.py +0 -0
  518. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/backup_entities.py +0 -0
  519. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/backup_files.py +0 -0
  520. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/backup_helper_target.py +0 -0
  521. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/backup_integrations.py +0 -0
  522. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/backup_manager.py +0 -0
  523. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/backup_tags.py +0 -0
  524. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/backup_todo.py +0 -0
  525. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/browser_landing.py +0 -0
  526. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/client/__init__.py +0 -0
  527. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/client/admin_routes.py +0 -0
  528. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/client/config_entry_read.py +0 -0
  529. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/client/error_log_journald.py +0 -0
  530. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/client/event_listeners.py +0 -0
  531. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/client/models.py +0 -0
  532. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/client/rest_client.py +0 -0
  533. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/client/supervisor_client.py +0 -0
  534. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/client/websocket_client.py +0 -0
  535. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/client/websocket_listener.py +0 -0
  536. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/client/websocket_state.py +0 -0
  537. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/config.py +0 -0
  538. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/config_backup.py +0 -0
  539. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/config_meta.py +0 -0
  540. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/config_overrides.py +0 -0
  541. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/config_settings.py +0 -0
  542. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  543. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  544. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  545. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/dashboard_screenshot/engine_compat.py +0 -0
  546. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  547. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  548. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/dashboard_screenshot/theme_check.py +0 -0
  549. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  550. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/errors.py +0 -0
  551. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/ha_request_queue.py +0 -0
  552. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  553. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/http_transport.py +0 -0
  554. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/image_info.py +0 -0
  555. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/ipv6_lan_guard.py +0 -0
  556. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/listen_sockets.py +0 -0
  557. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/llm_exposure.py +0 -0
  558. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/log_filters.py +0 -0
  559. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/mcp_client_context.py +0 -0
  560. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/policy/__init__.py +0 -0
  561. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/policy/approval_queue.py +0 -0
  562. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/policy/decision_pin.py +0 -0
  563. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/policy/decisions.py +0 -0
  564. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/policy/editing.py +0 -0
  565. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/policy/evaluator.py +0 -0
  566. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/policy/events.py +0 -0
  567. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/policy/handlers.py +0 -0
  568. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/policy/middleware.py +0 -0
  569. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/policy/model.py +0 -0
  570. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/policy/mrtr.py +0 -0
  571. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/policy/persistence.py +0 -0
  572. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/policy/server_channels.py +0 -0
  573. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/policy/value_sources.py +0 -0
  574. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/py.typed +0 -0
  575. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/read_only.py +0 -0
  576. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/redaction.py +0 -0
  577. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/renamed_tools.py +0 -0
  578. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  579. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  580. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  581. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
  582. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  583. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  584. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  585. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  586. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  587. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  588. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  589. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  590. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  591. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  592. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  593. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
  594. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  595. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/server.py +0 -0
  596. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/server_instructions.py +0 -0
  597. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/server_lifespan.py +0 -0
  598. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/server_tool_text.py +0 -0
  599. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/__init__.py +0 -0
  600. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  601. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  602. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  603. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/_handlers_oauth_callbacks.py +0 -0
  604. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  605. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  606. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  607. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  608. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  609. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  610. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  611. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/_theme.py +0 -0
  612. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  613. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  614. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  615. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  616. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  617. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  618. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  619. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  620. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  621. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/hu.json +0 -0
  622. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  623. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  624. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  625. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  626. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  627. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  628. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  629. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  630. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  631. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/settings.css +0 -0
  632. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/settings.html +0 -0
  633. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
  634. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
  635. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
  636. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
  637. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
  638. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
  639. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
  640. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
  641. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
  642. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/settings_ui/settings_js/10_oauth_callbacks.js +0 -0
  643. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/smoke_test.py +0 -0
  644. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  645. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/storage_helper_types.py +0 -0
  646. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/strict_bps.py +0 -0
  647. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tool_catalog.py +0 -0
  648. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tool_dispatch.py +0 -0
  649. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/__init__.py +0 -0
  650. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/addon_connection_hints.py +0 -0
  651. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/area_messages.py +0 -0
  652. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/auto_backup.py +0 -0
  653. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/automation_errors.py +0 -0
  654. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/automation_registry_details.py +0 -0
  655. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/backup.py +0 -0
  656. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/backup_access.py +0 -0
  657. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/backup_on_demand.py +0 -0
  658. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/backup_snapshot.py +0 -0
  659. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/backup_snapshot_restore.py +0 -0
  660. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  661. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/best_practice_result.py +0 -0
  662. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  663. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  664. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  665. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/blueprint_write.py +0 -0
  666. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/bug_report_config.py +0 -0
  667. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/bug_report_redaction.py +0 -0
  668. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/bug_report_templates.py +0 -0
  669. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/bulk_selector.py +0 -0
  670. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/coercion.py +0 -0
  671. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/component_api.py +0 -0
  672. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/component_automation.py +0 -0
  673. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/component_config_entries.py +0 -0
  674. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/component_config_reads.py +0 -0
  675. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  676. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/component_devices.py +0 -0
  677. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/component_helper_collections.py +0 -0
  678. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/component_registries.py +0 -0
  679. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  680. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/component_todo.py +0 -0
  681. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_entry_backup.py +0 -0
  682. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  683. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_entry_flow_errors.py +0 -0
  684. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  685. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
  686. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  687. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_entry_flow_progress.py +0 -0
  688. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  689. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  690. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  691. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_file_visibility.py +0 -0
  692. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
  693. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
  694. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
  695. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
  696. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
  697. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
  698. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
  699. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
  700. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
  701. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_write_errors.py +0 -0
  702. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/config_write_helpers.py +0 -0
  703. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/core_contract.py +0 -0
  704. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/dashboard_card_describe.py +0 -0
  705. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  706. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
  707. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/dashboard_read_errors.py +0 -0
  708. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/dev_backup.py +0 -0
  709. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/device_control.py +0 -0
  710. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/device_enrichment.py +0 -0
  711. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
  712. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/energy_preferences.py +0 -0
  713. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/entity_expose_batch.py +0 -0
  714. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
  715. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/entity_registration.py +0 -0
  716. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/entity_removal.py +0 -0
  717. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/entity_update_fields.py +0 -0
  718. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  719. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/event_call.py +0 -0
  720. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/event_listener_fields.py +0 -0
  721. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/file_edit_refusal.py +0 -0
  722. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/flow_helper_lookup.py +0 -0
  723. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/flow_translations.py +0 -0
  724. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/hacs_backend.py +0 -0
  725. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/hacs_own_repository.py +0 -0
  726. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/hacs_registration.py +0 -0
  727. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/helper_flows.py +0 -0
  728. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/helpers.py +0 -0
  729. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/history_response.py +0 -0
  730. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/ignored_entries.py +0 -0
  731. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/integration_entry_state.py +0 -0
  732. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/integration_flow_steps.py +0 -0
  733. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/integration_schema.py +0 -0
  734. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/integration_ws_commands.py +0 -0
  735. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/log_common.py +0 -0
  736. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/log_sources.py +0 -0
  737. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  738. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/log_sources_logbook.py +0 -0
  739. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  740. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/radio/__init__.py +0 -0
  741. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/radio/base.py +0 -0
  742. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/radio/matter.py +0 -0
  743. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/radio/thread.py +0 -0
  744. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  745. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/radio/zwave.py +0 -0
  746. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
  747. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/recorder_errors.py +0 -0
  748. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/reference_validator.py +0 -0
  749. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/registry.py +0 -0
  750. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  751. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/resource_codec.py +0 -0
  752. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/resource_patch.py +0 -0
  753. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/response_helpers.py +0 -0
  754. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/scene_discovery.py +0 -0
  755. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/search/__init__.py +0 -0
  756. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/search/base.py +0 -0
  757. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/search/component.py +0 -0
  758. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/search/entities.py +0 -0
  759. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/search/legacy.py +0 -0
  760. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/search/modes.py +0 -0
  761. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/search/overview.py +0 -0
  762. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/search/response.py +0 -0
  763. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/search/state.py +0 -0
  764. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/server_version.py +0 -0
  765. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  766. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  767. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  768. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  769. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  770. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  771. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/smart_search/_flow_helpers.py +0 -0
  772. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  773. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  774. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  775. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  776. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/statistics_calendar.py +0 -0
  777. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/statistics_helpers.py +0 -0
  778. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/statistics_resets.py +0 -0
  779. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/system_restart.py +0 -0
  780. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tool_hints.py +0 -0
  781. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  782. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_addons.py +0 -0
  783. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_areas.py +0 -0
  784. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  785. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  786. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_calendar.py +0 -0
  787. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_camera.py +0 -0
  788. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_categories.py +0 -0
  789. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_code.py +0 -0
  790. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  791. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  792. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  793. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  794. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  795. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_dev.py +0 -0
  796. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_energy.py +0 -0
  797. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_entities.py +0 -0
  798. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  799. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_groups.py +0 -0
  800. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_hacs.py +0 -0
  801. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_history.py +0 -0
  802. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_integrations.py +0 -0
  803. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_labels.py +0 -0
  804. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_logs.py +0 -0
  805. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_radio.py +0 -0
  806. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_registry.py +0 -0
  807. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_resources.py +0 -0
  808. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  809. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_service.py +0 -0
  810. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_services.py +0 -0
  811. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_themes.py +0 -0
  812. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_todo.py +0 -0
  813. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_traces.py +0 -0
  814. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_utility.py +0 -0
  815. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  816. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  817. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  818. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/update_categories.py +0 -0
  819. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/util_helpers.py +0 -0
  820. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/validation_middleware.py +0 -0
  821. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/ws_waiters.py +0 -0
  822. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/tools/yaml_extra_keys.py +0 -0
  823. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/transforms/__init__.py +0 -0
  824. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/transforms/categorized_search.py +0 -0
  825. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/transforms/compact_params.py +0 -0
  826. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/transforms/component_helpers.py +0 -0
  827. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/transforms/component_search.py +0 -0
  828. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  829. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  830. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/transport_security.py +0 -0
  831. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/__init__.py +0 -0
  832. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/config_hash.py +0 -0
  833. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/config_write_lock.py +0 -0
  834. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  835. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/data_paths.py +0 -0
  836. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  837. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/domain_handlers.py +0 -0
  838. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/entity_membership.py +0 -0
  839. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  840. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  841. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  842. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/operation_manager.py +0 -0
  843. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/python_sandbox.py +0 -0
  844. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  845. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/utils/skill_loader.py +0 -0
  846. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/visibility/__init__.py +0 -0
  847. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/visibility/config_files.py +0 -0
  848. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/visibility/enforcement.py +0 -0
  849. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/visibility/identifier_aliases.py +0 -0
  850. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/visibility/model.py +0 -0
  851. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/visibility/persistence.py +0 -0
  852. {ha_mcp_dev-9.2.0.dev3434 → ha_mcp_dev-9.2.0.dev3439}/src/ha_mcp/visibility/resolver.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 9.2.0.dev3434
3
+ Version: 9.2.0.dev3439
4
4
  Summary: Configure and automate Home Assistant with Claude, ChatGPT, and other AI assistants.
5
5
  Keywords: mcp,home-assistant,ai,automation,smart-home
6
6
  Author: Julien
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.2.0.dev3434"
7
+ version = "9.2.0.dev3439"
8
8
  description = "Configure and automate Home Assistant with Claude, ChatGPT, and other AI assistants."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13,<3.15"
@@ -85,23 +85,8 @@ ha-mcp-web = "ha_mcp.__main__:main_web"
85
85
  ha-mcp-oauth = "ha_mcp.__main__:main_oauth"
86
86
  ha-mcp-oidc = "ha_mcp.__main__:main_oidc"
87
87
 
88
- [tool.uv.build-backend]
89
- module-name = "ha_mcp"
90
- source-exclude = [
91
- "src/ha_mcp/resources/skills-vendor/.*",
92
- "src/ha_mcp/resources/skills-vendor/*.md",
93
- "src/ha_mcp/resources/skills-vendor/evals",
94
- "src/ha_mcp/resources/skills-vendor/scripts",
95
- "src/ha_mcp/settings_ui/AGENTS.md",
96
- "src/ha_mcp/settings_ui/CLAUDE.md",
97
- ]
98
-
99
- [tool.uv.sources.hamcp-test-env]
100
- path = "tests/test-env"
101
- editable = true
102
-
103
88
  [tool.mypy]
104
- python_version = "3.13"
89
+ python_version = "3.14"
105
90
  mypy_path = "src"
106
91
  cache_dir = "/tmp/.mypy_cache"
107
92
  exclude = ["^src/ha_mcp/resources/skills-vendor/"]
@@ -118,6 +103,13 @@ module = ["ha_mcp._vendor.*"]
118
103
  follow_imports = "skip"
119
104
  ignore_errors = true
120
105
 
106
+ [[tool.mypy.overrides]]
107
+ module = [
108
+ "voluptuous",
109
+ "voluptuous.*",
110
+ ]
111
+ follow_imports = "skip"
112
+
121
113
  [[tool.mypy.overrides]]
122
114
  module = [
123
115
  "annotatedyaml.*",
@@ -201,14 +193,18 @@ ignore = [
201
193
  [tool.pytest.ini_options]
202
194
  testpaths = ["tests"]
203
195
  empty_parameter_set_mark = "fail_at_collect"
196
+ strict_markers = true
197
+ strict_config = true
204
198
  addopts = [
205
- "--strict-markers",
206
- "--strict-config",
207
199
  "--verbose",
208
200
  "--tb=short",
209
201
  "--maxfail=3",
210
202
  "-ra",
211
203
  "--durations=10",
204
+ "-p",
205
+ "no:pytest_homeassistant",
206
+ "-p",
207
+ "no:respx",
212
208
  ]
213
209
  markers = [
214
210
  "slow: marks tests as slow (use -m 'not slow' to skip)",
@@ -258,8 +254,8 @@ markers = [
258
254
  "requires_component_surface: needs an active ha_mcp_tools config entry - skipped on the no-tools lanes without an active server entry (plain container, HAOS inaddon, where it is absent or disabled); #2584",
259
255
  ]
260
256
  asyncio_mode = "auto"
261
- asyncio_default_fixture_loop_scope = "session"
262
- asyncio_default_test_loop_scope = "session"
257
+ asyncio_default_fixture_loop_scope = "function"
258
+ asyncio_default_test_loop_scope = "function"
263
259
  timeout = 300
264
260
  timeout_method = "signal"
265
261
  timeout_func_only = true
@@ -272,8 +268,27 @@ filterwarnings = [
272
268
  "ignore::DeprecationWarning",
273
269
  "ignore::PendingDeprecationWarning",
274
270
  "ignore::ResourceWarning",
271
+ "ignore::aiohttp.web_exceptions.NotAppKeyWarning",
272
+ ]
273
+
274
+ [tool.uv]
275
+ environments = ["python_full_version >= '3.14.2'"]
276
+
277
+ [tool.uv.build-backend]
278
+ module-name = "ha_mcp"
279
+ source-exclude = [
280
+ "src/ha_mcp/resources/skills-vendor/.*",
281
+ "src/ha_mcp/resources/skills-vendor/*.md",
282
+ "src/ha_mcp/resources/skills-vendor/evals",
283
+ "src/ha_mcp/resources/skills-vendor/scripts",
284
+ "src/ha_mcp/settings_ui/AGENTS.md",
285
+ "src/ha_mcp/settings_ui/CLAUDE.md",
275
286
  ]
276
287
 
288
+ [tool.uv.sources.hamcp-test-env]
289
+ path = "tests/test-env"
290
+ editable = true
291
+
277
292
  [tool.semantic_release]
278
293
  version_toml = ["pyproject.toml:project.version"]
279
294
  version_variables = [
@@ -306,7 +321,8 @@ upload_to_vcs_release = false
306
321
 
307
322
  [dependency-groups]
308
323
  dev = [
309
- "aiohttp>=3.13.5",
324
+ "homeassistant==2026.11.0",
325
+ "pytest-homeassistant==2026.11.0",
310
326
  "websockets>=15.0.1",
311
327
  "docker>=7.1.0",
312
328
  "mcp>=1.26.0,<2",
@@ -317,9 +333,7 @@ dev = [
317
333
  "pytest-timeout>=2.3.0",
318
334
  "quickjs-ng==0.17.0.2",
319
335
  "pytest-rerunfailures>=15.0",
320
- "voluptuous>=0.15.2",
321
336
  "voluptuous-openapi>=0.4.1",
322
- "probatio>=0.11.4",
323
337
  "pytest-xdist>=3.8.0",
324
338
  "requests>=2.25.0",
325
339
  "lefthook>=1.10.0",
@@ -4,12 +4,14 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.2.0.dev3434"
7
+ version = "9.2.0.dev3439"
8
8
  description = "Configure and automate Home Assistant with Claude, ChatGPT, and other AI assistants."
9
9
  readme = "README.md"
10
10
  # Upper bound widened to <3.15 so the package installs on Home Assistant's
11
11
  # interpreter when run in-process by the ha_mcp_tools component (HA
12
- # core-2026.7 ships Python 3.14). src/ stays 3.13-compatible.
12
+ # core-2026.7 ships Python 3.14). ruff infers its target from this floor, so
13
+ # it writes no 3.14-only syntax while 3.13 can still install; CI, mypy, the
14
+ # images and the dev environment run 3.14.
13
15
  requires-python = ">=3.13,<3.15"
14
16
  license = "MIT"
15
17
  license-files = ["LICENSE"]
@@ -125,7 +127,7 @@ source-exclude = [
125
127
  ]
126
128
 
127
129
  [tool.mypy]
128
- python_version = "3.13"
130
+ python_version = "3.14"
129
131
  mypy_path = "src"
130
132
  # /tmp keeps the cache on Linux tmpfs — avoids the slow Windows FS in WSL2.
131
133
  # Windows-native contributors can remove this line or override with MYPY_CACHE_DIR.
@@ -154,6 +156,13 @@ module = ["ha_mcp._vendor.*"]
154
156
  follow_imports = "skip"
155
157
  ignore_errors = true
156
158
 
159
+ [[tool.mypy.overrides]]
160
+ # Core 2026.11 installs probatio as ``voluptuous`` at import; the component and
161
+ # the webhook proxy run on Core versions before and after that switch, so
162
+ # voluptuous schemas stay untyped rather than typed as either library.
163
+ module = ["voluptuous", "voluptuous.*"]
164
+ follow_imports = "skip"
165
+
157
166
  [[tool.mypy.overrides]]
158
167
  module = [
159
168
  "annotatedyaml.*",
@@ -268,15 +277,30 @@ testpaths = ["tests"]
268
277
  # as neither a failure nor a real skip. Make it a collection error instead.
269
278
  empty_parameter_set_mark = "fail_at_collect"
270
279
 
280
+ # Unregistered markers and unknown config keys are errors. Set here, not as
281
+ # --strict-* in addopts: pytest 9.0 (the version Core's test package pins)
282
+ # silently ignores those flags in addopts.
283
+ strict_markers = true
284
+ strict_config = true
285
+
271
286
  # Command line options
272
287
  addopts = [
273
- "--strict-markers",
274
- "--strict-config",
275
288
  "--verbose",
276
289
  "--tb=short",
277
290
  "--maxfail=3",
278
291
  "-ra",
279
292
  "--durations=10",
293
+ # Core's test plugin (pytest-homeassistant, dev group) blocks sockets,
294
+ # fails tests that leave threads or tasks behind, and needs a fresh event
295
+ # loop per test. The unit and app (add-on) trees load it from their
296
+ # conftest; E2E sessions, which share one loop and reach real containers,
297
+ # must not get it from the installed entry point.
298
+ "-p",
299
+ "no:pytest_homeassistant",
300
+ # respx's entry point imports httpx before Home Assistant can alias it to
301
+ # httpx2, which Core refuses at import. Core's plugin imports respx itself.
302
+ "-p",
303
+ "no:respx",
280
304
  ]
281
305
 
282
306
  # Test markers
@@ -333,13 +357,13 @@ markers = [
333
357
  "requires_component_surface: needs an active ha_mcp_tools config entry - skipped on the no-tools lanes without an active server entry (plain container, HAOS inaddon, where it is absent or disabled); #2584",
334
358
  ]
335
359
 
336
- # Async support - session-scoped loop lets session-scoped fixtures
337
- # (mcp_server, mcp_client, ha_client) share one event loop with tests.
338
- # Without this, each test gets a new loop and session-scoped httpx
339
- # clients fail with "Event loop is closed".
360
+ # A fresh event loop per test, as Core's test plugin requires. The E2E tree
361
+ # runs its tests and fixtures on one session loop instead (session-scoped
362
+ # mcp_server, mcp_client and ha_client share it); see
363
+ # tests/src/e2e/_conftest_collection.py.
340
364
  asyncio_mode = "auto"
341
- asyncio_default_fixture_loop_scope = "session"
342
- asyncio_default_test_loop_scope = "session"
365
+ asyncio_default_fixture_loop_scope = "function"
366
+ asyncio_default_test_loop_scope = "function"
343
367
 
344
368
  # Per-test timeout (pytest-timeout). A stuck server-side await otherwise
345
369
  # stalls the run silently until the JOB timeout - observed as a 22-minute
@@ -375,17 +399,23 @@ filterwarnings = [
375
399
  "ignore::PendingDeprecationWarning",
376
400
  # Allow all ResourceWarnings, including those emitted during test cleanup
377
401
  "ignore::ResourceWarning",
402
+ # Core's http component keeps a plain string key on its aiohttp app.
403
+ "ignore::aiohttp.web_exceptions.NotAppKeyWarning",
378
404
  ]
379
405
 
380
406
  [dependency-groups]
381
407
  dev = [
382
- # Real aiohttp so tests can pin the ClientTimeout defaults the custom
383
- # component's relay and the webhook-proxy addon rely on (both are stubbed
384
- # in unit tests; nothing else would catch stub drift). NOT a runtime
385
- # dependency — src/ never imports aiohttp; HA core provides it in-process.
386
- # Floor = the aiohttp HA core 2026.6 pins (2026.7 pins 3.14.1, 2026.8.dev
387
- # pins 3.14.3), so the version tested here is one a supported HA runs.
388
- "aiohttp>=3.13.5",
408
+ # Real Home Assistant Core and Core's own test package: unit tests run
409
+ # against Core's modules and its `hass` fixture instead of hand-written
410
+ # fakes, and uv.lock resolves Core's exact pins for the packages ha-mcp
411
+ # shares with the embedded install (packages Core pins only in
412
+ # package_constraints.txt are moved by check_ha_constraint_alignment.py
413
+ # --sync-lock). Both stay on the Core version of the
414
+ # e2e image (tests/test_constants.py); Renovate bumps all three together.
415
+ # renovate: datasource=docker depName=ghcr.io/home-assistant/home-assistant
416
+ "homeassistant==2026.11.0",
417
+ # renovate: datasource=docker depName=ghcr.io/home-assistant/home-assistant
418
+ "pytest-homeassistant==2026.11.0",
389
419
  # Test infrastructure imports the SHARED websockets directly (the HAOS
390
420
  # runtime harness, the image bake, wait_helpers) to talk to Home
391
421
  # Assistant's own WebSocket API — that is test tooling driving HA, not
@@ -404,20 +434,12 @@ dev = [
404
434
  # Exercise the component's real sandbox thread affinity in focused unit tests.
405
435
  "quickjs-ng==0.17.0.2",
406
436
  "pytest-rerunfailures>=15.0",
407
- # Real voluptuous for the config-flow tests (the component's
408
- # config_flow imports it; HA provides it at runtime, tests need it here).
409
- "voluptuous>=0.15.2",
410
437
  # Real voluptuous-openapi for the embedded e2e LLM-API test: it converts
411
438
  # the REAL tool-schema catalog exactly like llm_api.py does at runtime.
412
439
  # HA core shipped it through 2026.8; from 2026.9 the component manifest
413
- # is what installs it. Unit tests stub it.
440
+ # is what installs it. aiohttp, voluptuous and probatio (what core 2026.9
441
+ # converts with) come with homeassistant above.
414
442
  "voluptuous-openapi>=0.4.1",
415
- # What core 2026.9 switched to, and converts with when the manifest
416
- # requirement above is missing. Needed to assert the round trip an
417
- # LLM-API tool schema actually makes there (#2361): voluptuous-openapi
418
- # alone cannot show the defect, since it spells an exclusive bound in the
419
- # numeric form Anthropic accepts.
420
- "probatio>=0.11.4",
421
443
  "pytest-xdist>=3.8.0",
422
444
  "requests>=2.25.0",
423
445
  "lefthook>=1.10.0",
@@ -433,6 +455,11 @@ dev = [
433
455
  "hamcp-test-env",
434
456
  ]
435
457
 
458
+ [tool.uv]
459
+ # The dev group's homeassistant requires Python >=3.14.2; the published
460
+ # package keeps >=3.13, so only the lock is narrowed.
461
+ environments = ["python_full_version >= '3.14.2'"]
462
+
436
463
  [tool.uv.sources]
437
464
  hamcp-test-env = { path = "tests/test-env", editable = true }
438
465
 
@@ -502,7 +502,7 @@ def _log_startup_version() -> None:
502
502
  "A newer ha-mcp release is available: %s (you have %s). %s",
503
503
  info.latest,
504
504
  info.current,
505
- update_command_hint(info.current),
505
+ update_command_hint(info.current, info),
506
506
  )
507
507
 
508
508
 
@@ -46,9 +46,9 @@ async def with_registry_icon(
46
46
  """The stored item plus the icon its entity's registry entry sets, if any.
47
47
 
48
48
  The registry icon is the one the entity shows, and the helper tools write
49
- it there (an update always; a create for a zone, or when Core's schema
50
- has no icon field or cannot be read), so the stored item alone can miss
51
- it. A failed registry read
49
+ it there when Core's schema has no icon field or cannot be read (older
50
+ versions also for zones and on every update), so the stored item alone
51
+ can miss it. A failed registry read
52
52
  propagates, so the capture reports it instead of saving a snapshot
53
53
  without the icon.
54
54
  """
@@ -1,8 +1,9 @@
1
1
  """The zone a zone tool names, its registry icon, and a removed zone on restore.
2
2
 
3
- The helper tools keep a zone's icon in the entity registry unless the stored
4
- zone already has one (#2643), so the stored item alone can miss it: the
5
- snapshot records the registry's icon too. Core's ``zone/update`` needs the
3
+ A zone's entity can carry an icon override in the entity registry (set with
4
+ ha_set_entity, or by older ha-mcp versions in place of the stored icon), so
5
+ the stored item alone can miss it: the snapshot records the registry's icon
6
+ too. Core's ``zone/update`` needs the
6
7
  stored zone; once it was removed, the restore creates it again, and Core takes
7
8
  the new zone's id from the slug of its name. Core keeps a removed zone's
8
9
  registry entry for 30 days, so a zone created again under its old id in that
@@ -4,7 +4,7 @@ Every table is derived from the ``Setting`` metadata on the ``Settings``
4
4
  fields; add or change a setting there, not here.
5
5
  """
6
6
 
7
- from typing import NamedTuple
7
+ from typing import NamedTuple, cast
8
8
 
9
9
  from pydantic.fields import FieldInfo
10
10
 
@@ -173,7 +173,7 @@ def _env(field: FieldInfo) -> str:
173
173
 
174
174
  def _ftype(field: FieldInfo) -> RegistryFieldType:
175
175
  assert field.annotation in (bool, int, float, str)
176
- return field.annotation
176
+ return cast(RegistryFieldType, field.annotation)
177
177
 
178
178
 
179
179
  FEATURE_FLAG_FIELDS: tuple[FeatureFlagField, ...] = tuple(
@@ -5,6 +5,7 @@ import asyncio
5
5
  import contextlib
6
6
  import ipaddress
7
7
  import logging
8
+ import platform
8
9
  from collections.abc import Callable
9
10
  from typing import Any
10
11
  from urllib.parse import urlparse
@@ -282,3 +283,14 @@ async def fetch_ha_install(client: Any) -> dict[str, Any] | None:
282
283
  if ws_client is not None:
283
284
  with contextlib.suppress(Exception):
284
285
  await ws_client.disconnect()
286
+
287
+
288
+ def detect_platform() -> dict[str, str]:
289
+ """Detect platform information."""
290
+ return {
291
+ "os": platform.system(), # Windows, Darwin, Linux
292
+ "os_release": platform.release(),
293
+ "os_version": platform.version(),
294
+ "architecture": platform.machine(),
295
+ "python_version": platform.python_version(),
296
+ }
@@ -61,7 +61,6 @@ def merged_update(
61
61
  name: str | None,
62
62
  icon: str | None,
63
63
  fields: dict[str, Any],
64
- entity_id: str,
65
64
  ) -> dict[str, Any]:
66
65
  """The stored item plus the changes: Core's update writes the whole item.
67
66
 
@@ -75,8 +74,6 @@ def merged_update(
75
74
  body.pop("name", None)
76
75
  if name is not None:
77
76
  body["name"] = name
78
- if helper_type == "zone":
79
- icon = _zone_item_icon(stored, icon, entity_id)
80
77
  if icon is not None:
81
78
  if icon:
82
79
  body["icon"] = icon
@@ -86,33 +83,6 @@ def merged_update(
86
83
  return body
87
84
 
88
85
 
89
- def _zone_item_icon(
90
- stored: dict[str, Any], icon: str | None, entity_id: str
91
- ) -> str | None:
92
- """The icon to write into a zone's stored item, ``None`` to leave it (#2643).
93
-
94
- The zone entity shows the registry icon over the item's, and Core's zone
95
- update merges into the item and rejects an empty icon, so an icon stored
96
- there can never be removed. A new icon therefore goes into the item only
97
- when it already holds one; otherwise the registry alone carries it and
98
- stays clearable. Clearing an icon the item holds is refused.
99
- """
100
- if not stored.get("icon"):
101
- return None
102
- if icon == "":
103
- raise_tool_error(
104
- create_error_response(
105
- ErrorCode.VALIDATION_INVALID_PARAMETER,
106
- f"The icon of {entity_id} cannot be removed: the zone's stored "
107
- f"icon ({stored['icon']}) is kept by Home Assistant's zone update "
108
- "and would show again.",
109
- context=_simple_helper_error_context("zone", entity_id=entity_id),
110
- suggestions=["Set a different icon instead of an empty one"],
111
- )
112
- )
113
- return icon
114
-
115
-
116
86
  def _reject(helper_type: str, message: str, **context: Any) -> None:
117
87
  raise_tool_error(
118
88
  create_error_response(
@@ -17,7 +17,7 @@ from ..ws_waiters import wait_for_entity_registered
17
17
  from .core_payload import (
18
18
  with_create_defaults,
19
19
  )
20
- from .icon_route import collection_icon
20
+ from .icon_route import icon_targets, note_hidden_icon
21
21
  from .registry import _ws_error_msg
22
22
  from .schemas import (
23
23
  _attach_helper_skill,
@@ -125,24 +125,14 @@ async def _execute_create_simple_helper(
125
125
  )
126
126
  )
127
127
 
128
- # A zone's update merges into the stored item and rejects an empty icon, so
129
- # an icon stored there can never be removed: a new zone's icon goes to the
130
- # entity registry (#2643), like the icon of a type whose schema has none or
131
- # cannot be read.
132
- item_icon = (
133
- None
134
- if helper_type == "zone"
135
- else await collection_icon(client, helper_type, "create", icon)
136
- )
137
- registry_icon = icon if item_icon is None else None
138
- message = _build_create_message(
139
- helper_type, name, None if registry_icon else icon, fields
140
- )
128
+ item_icon, registry_icon = await icon_targets(client, helper_type, "create", icon)
129
+ message = _build_create_message(helper_type, name, item_icon, fields)
141
130
  native = await _create_via_component(
142
131
  client, helper_type, message, area_id, labels, category, registry_icon
143
132
  )
144
133
  if native is not None:
145
134
  native_data, native_entity_id, native_warnings = native
135
+ await note_hidden_icon(client, native_entity_id, item_icon, native_warnings)
146
136
  create_response = _helper_response(
147
137
  "create",
148
138
  helper_type,
@@ -212,6 +202,7 @@ async def _execute_create_simple_helper(
212
202
  registry_icon,
213
203
  )
214
204
  await _apply_create_category(client, entity_id, category, helper_data, warnings)
205
+ await note_hidden_icon(client, entity_id, item_icon, warnings)
215
206
 
216
207
  create_response = _helper_response(
217
208
  "create",
@@ -0,0 +1,72 @@
1
+ """Route a storage helper's icon by the running Core collection's own fields."""
2
+
3
+ from typing import Any
4
+
5
+ from ...client.rest_client import HomeAssistantError
6
+ from ..component_helper_collections import fetch_helper_schemas
7
+
8
+
9
+ async def icon_targets(
10
+ client: Any, helper_type: str, action: str, icon: str | None
11
+ ) -> tuple[str | None, str | None]:
12
+ """Where an icon is written: ``(stored item, entity registry)``.
13
+
14
+ The item takes the icon when Core's ``action`` schema for the type
15
+ declares an ``icon`` field (person and tag declare none), and then the
16
+ registry does not: the helper and zone dialogs write the icon only to the
17
+ item, and a registry override would hide every later change made there
18
+ (#3001). A type without the field keeps its icon in the registry.
19
+
20
+ When the schemas cannot be read (no component, or a failed read) or do
21
+ not list the type or action, nothing is guessed: the icon goes to the
22
+ registry, as the entity settings set it, and a cleared icon ('') clears
23
+ both, since clearing only the registry would bring an older stored icon
24
+ back. A zone keeps its icon in the item even then: its schema has always
25
+ declared one, and the Zones editor shows only the stored icon.
26
+ """
27
+ if icon is None:
28
+ return None, None
29
+ schemas = await fetch_helper_schemas(client)
30
+ fields = schemas.get(helper_type, {}).get(action) if schemas else None
31
+ if isinstance(fields, list):
32
+ if any(isinstance(f, dict) and f.get("name") == "icon" for f in fields):
33
+ return icon, None
34
+ return None, icon
35
+ if helper_type == "zone":
36
+ return icon, None
37
+ return (icon, icon) if icon == "" else (None, icon)
38
+
39
+
40
+ async def note_hidden_icon(
41
+ client: Any, entity_id: str | None, item_icon: str | None, warnings: list[str]
42
+ ) -> None:
43
+ """Warn when the entity's registry icon hides the icon just stored or
44
+ cleared.
45
+
46
+ The entity shows a registry icon over the stored one, and older ha-mcp
47
+ versions kept icons there (a zone's alone, every helper's on update), so
48
+ a changed or cleared stored icon can stay invisible. The registry read is
49
+ advisory: when it fails the write has still succeeded, so no warning is
50
+ given.
51
+ """
52
+ if item_icon is None or not entity_id:
53
+ return
54
+ try:
55
+ result = await client.send_websocket_message(
56
+ {"type": "config/entity_registry/get", "entity_id": entity_id}
57
+ )
58
+ except (HomeAssistantError, OSError, TimeoutError):
59
+ return
60
+ entry = result.get("result") if result.get("success") else None
61
+ override = entry.get("icon") if isinstance(entry, dict) else None
62
+ if not override or override == item_icon:
63
+ return
64
+ shown = (
65
+ f"shows its entity registry icon {override} over the stored icon {item_icon}"
66
+ if item_icon
67
+ else f"still shows its entity registry icon {override}"
68
+ )
69
+ warnings.append(
70
+ f"{entity_id} {shown}; clear it with "
71
+ f"ha_set_entity(entity_id='{entity_id}', icon='')."
72
+ )
@@ -22,7 +22,7 @@ from ..config_write_helpers import apply_entity_category
22
22
  from ..helpers import raise_tool_error, ws_failure_code
23
23
  from ..ws_waiters import wait_for_entity_registered
24
24
  from .core_payload import merged_update
25
- from .icon_route import collection_icon
25
+ from .icon_route import icon_targets, note_hidden_icon
26
26
  from .listing import listed_items
27
27
  from .registry import _ws_error_msg
28
28
  from .schemas import (
@@ -67,13 +67,12 @@ async def _execute_legacy_update(
67
67
  entity_id: str,
68
68
  unique_id: str,
69
69
  name: str | None,
70
- icon: str | None,
70
+ item_icon: str | None,
71
71
  fields: dict[str, Any],
72
72
  ) -> dict[str, Any]:
73
73
  """Update through Core's ``<type>/update`` WS command (no component)."""
74
74
  stored = await _stored_item(client, helper_type, entity_id, unique_id)
75
- item_icon = await collection_icon(client, helper_type, "update", icon)
76
- body = merged_update(helper_type, stored, name, item_icon, fields, entity_id)
75
+ body = merged_update(helper_type, stored, name, item_icon, fields)
77
76
  result = await client.send_websocket_message(
78
77
  {**body, "type": f"{helper_type}/update", f"{helper_type}_id": unique_id}
79
78
  )
@@ -246,13 +245,15 @@ async def _execute_update_simple_helper(
246
245
  )
247
246
 
248
247
  warnings: list[str] = []
248
+ item_icon, registry_icon = await icon_targets(client, helper_type, "update", icon)
249
249
  native = await _update_via_component(
250
250
  client,
251
251
  helper_type,
252
252
  entity_id,
253
253
  helper_id,
254
254
  name,
255
- icon,
255
+ item_icon,
256
+ registry_icon,
256
257
  area_id,
257
258
  labels,
258
259
  category,
@@ -260,6 +261,7 @@ async def _execute_update_simple_helper(
260
261
  )
261
262
  if native is not None:
262
263
  updated_data, entity, warnings = native
264
+ _note_kept_icon(helper_type, item_icon, updated_data, warnings)
263
265
  else:
264
266
  stored = await stored_helper_target(client, helper_type, helper_id, name)
265
267
  if stored is not None:
@@ -270,13 +272,14 @@ async def _execute_update_simple_helper(
270
272
  )
271
273
  entity, reason = entity_id, None
272
274
  updated_data = await _execute_legacy_update(
273
- client, helper_type, entity or helper_id, unique_id, name, icon, fields
275
+ client, helper_type, entity or helper_id, unique_id, name, item_icon, fields
274
276
  )
277
+ _note_kept_icon(helper_type, item_icon, updated_data, warnings)
275
278
  if entity is None:
276
279
  given = [
277
280
  field
278
281
  for field, value in (
279
- ("icon", icon),
282
+ ("icon", registry_icon),
280
283
  ("area", area_id),
281
284
  ("labels", labels),
282
285
  ("category", category),
@@ -298,7 +301,7 @@ async def _execute_update_simple_helper(
298
301
  await _apply_update_registry_and_category(
299
302
  client,
300
303
  entity_id,
301
- icon,
304
+ registry_icon,
302
305
  area_id,
303
306
  labels,
304
307
  category,
@@ -315,6 +318,7 @@ async def _execute_update_simple_helper(
315
318
  except Exception as e: # noqa: BLE001
316
319
  warnings.append(f"Update applied but verification failed: {e}")
317
320
 
321
+ await note_hidden_icon(client, entity, item_icon, warnings)
318
322
  update_response = _helper_response(
319
323
  "update",
320
324
  helper_type,
@@ -333,7 +337,8 @@ async def _update_via_component(
333
337
  entity_id: str,
334
338
  helper_id: str,
335
339
  name: str | None,
336
- icon: str | None,
340
+ item_icon: str | None,
341
+ registry_icon: str | None,
337
342
  area_id: str | None,
338
343
  labels: list[str] | None,
339
344
  category: str | None,
@@ -353,12 +358,11 @@ async def _update_via_component(
353
358
  # The component names the item's own entity; without one the storage id
354
359
  # names the item, never the caller's guessed entity_id.
355
360
  entity_id = item.get("entity_id") or helper_id
356
- item_icon = await collection_icon(client, helper_type, "update", icon)
357
- body = merged_update(helper_type, item["item"], name, item_icon, fields, entity_id)
361
+ body = merged_update(helper_type, item["item"], name, item_icon, fields)
358
362
  registry = {
359
363
  key: value
360
364
  for key, value in (
361
- ("icon", icon),
365
+ ("icon", registry_icon),
362
366
  ("area_id", area_id),
363
367
  ("labels", labels),
364
368
  ("category", category),
@@ -375,3 +379,22 @@ async def _update_via_component(
375
379
  error_context=_simple_helper_error_context(helper_type, entity_id=entity_id),
376
380
  )
377
381
  return None if result is None else native_result(result)
382
+
383
+
384
+ def _note_kept_icon(
385
+ helper_type: str,
386
+ item_icon: str | None,
387
+ updated_data: dict[str, Any],
388
+ warnings: list[str],
389
+ ) -> None:
390
+ """Say so when Core kept a stored icon the caller cleared.
391
+
392
+ A zone's update merges into the stored item, so leaving the icon out keeps
393
+ it, as it does when the zone dialog's icon is emptied and saved.
394
+ """
395
+ if item_icon == "" and updated_data.get("icon"):
396
+ warnings.append(
397
+ f"Home Assistant kept the {helper_type}'s icon "
398
+ f"{updated_data['icon']}: its update keeps a stored icon, as the "
399
+ f"{helper_type} dialog does, so it can be changed but not removed."
400
+ )