ha-mcp-dev 9.3.0.dev3505__tar.gz → 9.3.0.dev3511__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 (857) hide show
  1. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/PKG-INFO +1 -1
  2. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/pyproject.toml +1 -2
  3. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/pyproject.toml.orig +1 -2
  4. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/__init__.py +1 -1
  5. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/backup_manager.py +1 -1
  6. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/config.py +8 -19
  7. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/config_overrides.py +1 -1
  8. ha_mcp_dev-9.3.0.dev3505/src/ha_mcp/_rich_compat.py → ha_mcp_dev-9.3.0.dev3511/src/ha_mcp/rich_compat.py +2 -1
  9. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/__init__.py +8 -6
  10. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/_handlers_advanced.py +2 -2
  11. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/_handlers_backups.py +2 -2
  12. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/_handlers_server.py +2 -2
  13. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/_i18n.py +4 -4
  14. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/_persistence.py +1 -1
  15. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/_theme.py +1 -1
  16. ha_mcp_dev-9.3.0.dev3505/src/ha_mcp/settings_ui/_locale_policy.py → ha_mcp_dev-9.3.0.dev3511/src/ha_mcp/settings_ui/locale_policy.py +4 -1
  17. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_helpers/update.py +3 -3
  18. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/search/overview.py +8 -7
  19. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/search/response.py +4 -3
  20. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_config_dashboards.py +5 -5
  21. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_dev.py +4 -4
  22. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_search.py +6 -6
  23. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_yaml_config.py +3 -3
  24. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/python_sandbox.py +8 -6
  25. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/LICENSE +0 -0
  26. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/README.md +0 -0
  27. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/__main__.py +0 -0
  28. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_pypi_marker +0 -0
  29. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/__init__.py +0 -0
  30. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  31. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  32. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  33. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  34. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  35. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  36. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  37. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  38. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  39. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  40. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  41. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  42. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  43. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  44. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  45. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  46. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  47. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  48. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  49. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev_security.py +0 -0
  50. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  51. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  52. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  53. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  54. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  55. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  56. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  57. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  58. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  59. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  60. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  61. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  62. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  63. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  64. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  65. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  66. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  67. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  68. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  69. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  70. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  71. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  72. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  73. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  74. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  75. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  76. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  77. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  78. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  79. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  80. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  81. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  82. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  83. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  84. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  85. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  86. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  87. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  88. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  89. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  90. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  91. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/mixins/skills.py +0 -0
  92. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  93. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  94. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  95. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  96. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  97. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  98. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  99. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  100. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  101. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  102. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  103. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  104. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  105. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  106. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  107. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  108. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  109. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  110. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  111. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  112. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  113. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  114. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  115. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  116. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  117. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  118. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  119. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  120. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  121. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  122. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  123. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  124. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  125. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  126. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  127. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  128. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  129. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +0 -0
  130. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  131. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  132. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  133. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  134. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  135. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  136. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  137. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  138. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  139. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  140. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  141. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  142. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  143. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  144. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  145. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  146. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  147. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  148. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  149. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  150. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  151. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  152. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  153. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  154. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  155. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  156. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  157. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  158. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  159. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  160. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  161. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  162. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  163. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  164. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  165. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  166. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  167. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  168. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  169. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  170. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  171. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  172. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  173. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  174. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  175. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  176. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  177. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  178. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  179. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  180. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  181. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  182. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  183. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  184. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  185. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  186. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  187. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  188. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  189. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  190. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  191. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  192. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  193. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  194. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  195. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  196. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  197. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  198. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  199. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  200. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  201. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  202. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/mixins/extensions.py +0 -0
  203. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  204. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  205. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  206. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  207. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  208. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  209. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  210. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  211. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  212. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  213. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  214. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  215. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  216. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  217. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  218. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  219. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  220. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  221. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  222. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  223. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  224. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  225. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  226. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  227. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  228. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  229. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  230. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  231. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  232. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  233. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  234. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  235. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  236. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  237. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  238. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  239. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  240. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  241. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  242. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  243. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  244. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  245. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  246. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  247. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  248. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  249. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  250. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  251. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/skills/__init__.py +0 -0
  252. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/skills/_constants.py +0 -0
  253. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/skills/_resources.py +0 -0
  254. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/skills/_snapshot.py +0 -0
  255. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/skills/_source.py +0 -0
  256. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/skills/client.py +0 -0
  257. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/skills/extension.py +0 -0
  258. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/skills/models.py +0 -0
  259. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  260. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  261. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  262. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  263. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  264. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  265. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  266. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  267. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  268. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  269. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  270. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  271. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  272. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  273. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  274. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  275. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  276. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  277. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  278. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  279. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  280. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  281. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  282. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  283. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  284. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  285. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  286. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  287. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  288. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  289. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  290. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  291. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  292. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  293. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  294. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  295. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  296. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  297. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  298. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  299. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  300. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  301. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  302. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  303. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  304. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  305. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  306. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  307. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  308. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  309. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  310. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  311. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  312. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  313. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  314. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  315. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  316. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  317. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  318. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  319. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  320. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  321. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  322. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  323. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  324. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  325. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  326. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  327. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  328. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  329. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  330. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  331. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  332. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  333. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  334. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  335. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  336. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  337. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  338. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  339. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  340. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  341. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  342. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  343. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  344. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  345. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  346. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  347. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  348. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  349. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  350. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  351. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  352. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  353. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  354. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  355. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  356. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  357. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  358. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  359. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  360. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  361. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  362. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  363. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  364. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  365. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  366. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  367. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  368. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  369. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  370. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  371. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  372. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  373. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  374. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  375. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  376. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  377. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  378. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  379. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  380. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  381. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  382. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  383. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  384. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  385. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  386. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  387. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  388. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  389. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  390. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  391. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  392. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  393. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  394. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  395. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  396. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  397. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  398. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  399. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  400. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  401. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  402. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  403. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  404. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  405. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  406. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  407. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  408. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  409. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  410. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  411. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  412. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  413. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  414. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  415. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  416. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/_request_clock.py +0 -0
  417. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  418. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  419. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  420. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  421. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  422. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  423. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  424. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  425. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  426. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  427. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  428. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  429. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  430. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  431. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  432. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  433. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  434. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  435. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  436. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  437. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  438. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  439. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  440. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  441. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  442. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  443. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  444. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  445. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  446. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  447. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  448. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  449. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  450. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  451. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  452. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  453. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/requirements.txt +0 -0
  454. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  455. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  456. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  457. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  458. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  459. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  460. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  461. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  462. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  463. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  464. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  465. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  466. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  467. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  468. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  469. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  470. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  471. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  472. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  473. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  474. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  475. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  476. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  477. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  478. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  479. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  480. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  481. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  482. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  483. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  484. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  485. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  486. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  487. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  488. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  489. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  490. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  491. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  492. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  493. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  494. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  495. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  496. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  497. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  498. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  499. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  500. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  501. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  502. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  503. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  504. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  505. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  506. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  507. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  508. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  509. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  510. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/_version.py +0 -0
  511. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/app_discovery.py +0 -0
  512. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/auth/__init__.py +0 -0
  513. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/auth/consent_form.py +0 -0
  514. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/auth/iss_stamp.py +0 -0
  515. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/auth/oidc_compat.py +0 -0
  516. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/auth/provider.py +0 -0
  517. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/backup_calendar.py +0 -0
  518. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/backup_dashboards.py +0 -0
  519. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/backup_diff.py +0 -0
  520. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/backup_entities.py +0 -0
  521. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/backup_entity_ids.py +0 -0
  522. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/backup_files.py +0 -0
  523. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/backup_helper_target.py +0 -0
  524. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/backup_integrations.py +0 -0
  525. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/backup_tags.py +0 -0
  526. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/backup_todo.py +0 -0
  527. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/backup_zones.py +0 -0
  528. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/browser_landing.py +0 -0
  529. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/client/__init__.py +0 -0
  530. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/client/admin_routes.py +0 -0
  531. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/client/config_entry_read.py +0 -0
  532. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/client/error_log_journald.py +0 -0
  533. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/client/event_listeners.py +0 -0
  534. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/client/models.py +0 -0
  535. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/client/rest_client.py +0 -0
  536. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/client/supervisor_client.py +0 -0
  537. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/client/websocket_client.py +0 -0
  538. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/client/websocket_listener.py +0 -0
  539. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/client/websocket_state.py +0 -0
  540. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/config_backup.py +0 -0
  541. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/config_meta.py +0 -0
  542. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/config_registry.py +0 -0
  543. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/config_settings.py +0 -0
  544. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  545. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  546. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  547. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/dashboard_screenshot/engine_compat.py +0 -0
  548. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  549. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  550. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/dashboard_screenshot/theme_check.py +0 -0
  551. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  552. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/errors.py +0 -0
  553. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/ha_request_queue.py +0 -0
  554. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  555. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/http_transport.py +0 -0
  556. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/image_info.py +0 -0
  557. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/ipv6_lan_guard.py +0 -0
  558. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/listen_sockets.py +0 -0
  559. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/llm_exposure.py +0 -0
  560. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/log_filters.py +0 -0
  561. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/mcp_client_context.py +0 -0
  562. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/policy/__init__.py +0 -0
  563. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/policy/approval_queue.py +0 -0
  564. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/policy/decision_pin.py +0 -0
  565. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/policy/decisions.py +0 -0
  566. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/policy/editing.py +0 -0
  567. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/policy/evaluator.py +0 -0
  568. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/policy/events.py +0 -0
  569. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/policy/handlers.py +0 -0
  570. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/policy/middleware.py +0 -0
  571. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/policy/model.py +0 -0
  572. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/policy/mrtr.py +0 -0
  573. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/policy/persistence.py +0 -0
  574. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/policy/server_channels.py +0 -0
  575. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/policy/value_sources.py +0 -0
  576. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/py.typed +0 -0
  577. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/read_only.py +0 -0
  578. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/redaction.py +0 -0
  579. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/renamed_tools.py +0 -0
  580. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  581. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  582. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  583. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
  584. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  585. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  586. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  587. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  588. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  589. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  590. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  591. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  592. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  593. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  594. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  595. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
  596. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  597. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/server.py +0 -0
  598. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/server_instructions.py +0 -0
  599. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/server_lifespan.py +0 -0
  600. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/server_tool_text.py +0 -0
  601. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  602. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/_handlers_oauth_callbacks.py +0 -0
  603. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  604. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  605. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  606. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  607. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  608. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  609. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  610. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  611. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  612. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  613. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  614. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  615. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/hu.json +0 -0
  616. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  617. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  618. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  619. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  620. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  621. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/sr-Latn.json +0 -0
  622. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/sr.json +0 -0
  623. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  624. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  625. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  626. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  627. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/settings.css +0 -0
  628. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/settings.html +0 -0
  629. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
  630. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
  631. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
  632. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
  633. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
  634. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
  635. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
  636. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
  637. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
  638. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/settings_ui/settings_js/10_oauth_callbacks.js +0 -0
  639. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/smoke_test.py +0 -0
  640. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  641. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/storage_helper_types.py +0 -0
  642. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/strict_bps.py +0 -0
  643. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tool_catalog.py +0 -0
  644. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tool_dispatch.py +0 -0
  645. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/__init__.py +0 -0
  646. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/addon_connection_hints.py +0 -0
  647. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/area_messages.py +0 -0
  648. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/auto_backup.py +0 -0
  649. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/automation_errors.py +0 -0
  650. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/automation_registry_details.py +0 -0
  651. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/backup.py +0 -0
  652. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/backup_access.py +0 -0
  653. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/backup_on_demand.py +0 -0
  654. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/backup_snapshot.py +0 -0
  655. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/backup_snapshot_restore.py +0 -0
  656. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  657. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/best_practice_result.py +0 -0
  658. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  659. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  660. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  661. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/blueprint_write.py +0 -0
  662. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/bug_report_config.py +0 -0
  663. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/bug_report_redaction.py +0 -0
  664. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/bug_report_sources.py +0 -0
  665. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/bug_report_templates.py +0 -0
  666. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/bulk_selector.py +0 -0
  667. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/coercion.py +0 -0
  668. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/component_api.py +0 -0
  669. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/component_automation.py +0 -0
  670. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/component_config_entries.py +0 -0
  671. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/component_config_reads.py +0 -0
  672. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  673. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/component_devices.py +0 -0
  674. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/component_flow.py +0 -0
  675. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/component_helper_collections.py +0 -0
  676. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/component_registries.py +0 -0
  677. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  678. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/component_todo.py +0 -0
  679. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_entry_backup.py +0 -0
  680. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  681. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_entry_flow_errors.py +0 -0
  682. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  683. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
  684. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_entry_flow_progress.py +0 -0
  685. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_entry_flow_submit.py +0 -0
  686. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  687. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  688. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_file_visibility.py +0 -0
  689. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
  690. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
  691. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_helpers/create.py +0 -0
  692. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
  693. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
  694. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_helpers/icon_route.py +0 -0
  695. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
  696. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
  697. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
  698. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
  699. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
  700. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
  701. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_write_errors.py +0 -0
  702. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/config_write_helpers.py +0 -0
  703. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/core_contract.py +0 -0
  704. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/dashboard_card_describe.py +0 -0
  705. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  706. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
  707. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/dashboard_read_errors.py +0 -0
  708. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/dev_backup.py +0 -0
  709. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/device_control.py +0 -0
  710. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/device_enrichment.py +0 -0
  711. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
  712. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/energy_preferences.py +0 -0
  713. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/entity_expose_batch.py +0 -0
  714. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
  715. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/entity_registration.py +0 -0
  716. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/entity_removal.py +0 -0
  717. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/entity_update_fields.py +0 -0
  718. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  719. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/event_call.py +0 -0
  720. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/event_listener_fields.py +0 -0
  721. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/file_edit_refusal.py +0 -0
  722. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/flow_helper_lookup.py +0 -0
  723. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/flow_translations.py +0 -0
  724. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/hacs_backend.py +0 -0
  725. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/hacs_own_repository.py +0 -0
  726. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/hacs_registration.py +0 -0
  727. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/helper_flows.py +0 -0
  728. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/helpers.py +0 -0
  729. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/history_response.py +0 -0
  730. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/ignored_entries.py +0 -0
  731. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/integration_entry_state.py +0 -0
  732. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/integration_flow_steps.py +0 -0
  733. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/integration_schema.py +0 -0
  734. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/integration_ws_commands.py +0 -0
  735. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/log_common.py +0 -0
  736. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/log_sources.py +0 -0
  737. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  738. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/log_sources_logbook.py +0 -0
  739. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  740. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/radio/__init__.py +0 -0
  741. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/radio/base.py +0 -0
  742. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/radio/matter.py +0 -0
  743. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/radio/thread.py +0 -0
  744. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  745. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/radio/zwave.py +0 -0
  746. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
  747. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/recorder_errors.py +0 -0
  748. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/reference_validator.py +0 -0
  749. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/registry.py +0 -0
  750. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  751. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/resource_codec.py +0 -0
  752. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/resource_patch.py +0 -0
  753. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/response_helpers.py +0 -0
  754. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/scene_discovery.py +0 -0
  755. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/search/__init__.py +0 -0
  756. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/search/base.py +0 -0
  757. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/search/component.py +0 -0
  758. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/search/entities.py +0 -0
  759. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/search/legacy.py +0 -0
  760. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/search/modes.py +0 -0
  761. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/search/state.py +0 -0
  762. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/server_version.py +0 -0
  763. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  764. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  765. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  766. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  767. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  768. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  769. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/smart_search/_flow_helpers.py +0 -0
  770. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  771. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  772. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  773. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  774. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/statistics_calendar.py +0 -0
  775. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/statistics_helpers.py +0 -0
  776. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/statistics_resets.py +0 -0
  777. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/system_restart.py +0 -0
  778. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tool_hints.py +0 -0
  779. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  780. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_addons.py +0 -0
  781. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_areas.py +0 -0
  782. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  783. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  784. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  785. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_calendar.py +0 -0
  786. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_camera.py +0 -0
  787. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_categories.py +0 -0
  788. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_code.py +0 -0
  789. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  790. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  791. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  792. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  793. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  794. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_energy.py +0 -0
  795. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_entities.py +0 -0
  796. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  797. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_groups.py +0 -0
  798. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_hacs.py +0 -0
  799. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_history.py +0 -0
  800. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_integrations.py +0 -0
  801. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_labels.py +0 -0
  802. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_logs.py +0 -0
  803. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_radio.py +0 -0
  804. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_registry.py +0 -0
  805. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_resources.py +0 -0
  806. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  807. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_service.py +0 -0
  808. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_services.py +0 -0
  809. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_system.py +0 -0
  810. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_themes.py +0 -0
  811. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_todo.py +0 -0
  812. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_traces.py +0 -0
  813. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_updates.py +0 -0
  814. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_utility.py +0 -0
  815. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  816. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  817. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/tools_zones.py +0 -0
  818. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/trace_diagnostics.py +0 -0
  819. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/trace_logbook.py +0 -0
  820. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/trace_lookup.py +0 -0
  821. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/update_categories.py +0 -0
  822. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/util_helpers.py +0 -0
  823. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/validation_middleware.py +0 -0
  824. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/ws_waiters.py +0 -0
  825. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/tools/yaml_extra_keys.py +0 -0
  826. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/transforms/__init__.py +0 -0
  827. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/transforms/categorized_search.py +0 -0
  828. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/transforms/compact_params.py +0 -0
  829. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/transforms/component_helpers.py +0 -0
  830. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/transforms/component_search.py +0 -0
  831. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  832. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  833. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/transport_security.py +0 -0
  834. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/update_check.py +0 -0
  835. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/__init__.py +0 -0
  836. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/config_hash.py +0 -0
  837. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/config_write_lock.py +0 -0
  838. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  839. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/data_paths.py +0 -0
  840. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  841. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/domain_handlers.py +0 -0
  842. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/entity_membership.py +0 -0
  843. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  844. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  845. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  846. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/operation_manager.py +0 -0
  847. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  848. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/skill_loader.py +0 -0
  849. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/utils/usage_logger.py +0 -0
  850. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/visibility/__init__.py +0 -0
  851. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/visibility/config_files.py +0 -0
  852. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/visibility/enforcement.py +0 -0
  853. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/visibility/identifier_aliases.py +0 -0
  854. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/visibility/model.py +0 -0
  855. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/visibility/persistence.py +0 -0
  856. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/visibility/resolver.py +0 -0
  857. {ha_mcp_dev-9.3.0.dev3505 → ha_mcp_dev-9.3.0.dev3511}/src/ha_mcp/visibility/result_payloads.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 9.3.0.dev3505
3
+ Version: 9.3.0.dev3511
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.3.0.dev3505"
7
+ version = "9.3.0.dev3511"
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.14,<3.15"
@@ -121,7 +121,6 @@ disable_error_code = [
121
121
  module = [
122
122
  "tests.addon.test_addon_startup",
123
123
  "tests.addon.test_addon_structure",
124
- "tests.addon.test_webhook_proxy",
125
124
  "tests.haos_image_build.build_image",
126
125
  "tests.haos_image_build.dev_addon_tree",
127
126
  "tests.src.e2e._conftest_readiness",
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.3.0.dev3505"
7
+ version = "9.3.0.dev3511"
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
@@ -180,7 +180,6 @@ disable_error_code = ["import-not-found", "import-untyped"]
180
180
  module = [
181
181
  "tests.addon.test_addon_startup",
182
182
  "tests.addon.test_addon_structure",
183
- "tests.addon.test_webhook_proxy",
184
183
  "tests.haos_image_build.build_image",
185
184
  "tests.haos_image_build.dev_addon_tree",
186
185
  "tests.src.e2e._conftest_readiness",
@@ -25,7 +25,7 @@ if sys.version_info < (3, 14):
25
25
  # Must be imported before anything that reaches fastmcp (``.auth`` below does),
26
26
  # because fastmcp configures rich logging at import time and dies on a rich
27
27
  # older than 13.9.4. Importing this module applies the shim. See #2186.
28
- from . import _rich_compat as _rich_compat
28
+ from . import rich_compat as rich_compat
29
29
  from ._version import get_version
30
30
 
31
31
  __version__ = get_version()
@@ -1961,7 +1961,7 @@ def get_backup_manager(client: Any, settings: Any) -> BackupManager:
1961
1961
  manager (and one set of per-entity locks). Rebuilds when the
1962
1962
  ``settings`` object identity differs from the cached manager's —
1963
1963
  runtime env-var changes that reset the global settings singleton
1964
- (see ``config._reset_global_settings``) yield a fresh ``settings``
1964
+ (see ``config.reset_global_settings``) yield a fresh ``settings``
1965
1965
  instance, which forces a manager rebuild so new settings take effect.
1966
1966
  Active guards, capture locks and restore pins survive that replacement.
1967
1967
  """
@@ -61,7 +61,6 @@ __all__ = [
61
61
  "Settings",
62
62
  "_coerce_advanced_override_value",
63
63
  "_read_feature_flag_override_file",
64
- "_reset_global_settings",
65
64
  "_settings",
66
65
  "get_backup_setting_origin",
67
66
  "get_embedded_config_dir",
@@ -124,7 +123,7 @@ def set_embedded_connection(
124
123
  server entry inside its server worker thread, before the server is
125
124
  constructed, so the loopback URL
126
125
  and admin token reach ``Settings`` in memory instead of through ``os.environ``.
127
- The values survive ``_reset_global_settings()``: the settings-UI reset+rebuild
126
+ The values survive ``reset_global_settings()``: the settings-UI reset+rebuild
128
127
  path re-applies them on the next ``get_global_settings()`` call.
129
128
 
130
129
  Also applies to an ALREADY-BUILT singleton: importing ``ha_mcp`` runs the
@@ -205,7 +204,7 @@ def should_emit_llm_api_metadata() -> bool:
205
204
  def _reset_embedded_connection() -> None:
206
205
  """Drop the registered embedded connection (test seam).
207
206
 
208
- Sibling to :func:`_reset_global_settings`; lets suites that exercise the
207
+ Sibling to :func:`reset_global_settings`; lets suites that exercise the
209
208
  in-process token channel isolate state between tests. Not used in production —
210
209
  the connection is registered once per worker thread and is meant to persist.
211
210
  """
@@ -236,7 +235,7 @@ def get_global_settings() -> Settings:
236
235
 
237
236
  Applies override files at first read so web-UI edits take effect
238
237
  on the next ``get_global_settings()`` call after
239
- ``_reset_global_settings()`` is called by the POST handler:
238
+ ``reset_global_settings()`` is called by the POST handler:
240
239
 
241
240
  - Feature flags persisted to ``<data_dir>/feature_flags.json``
242
241
  - Auto-backup settings persisted to ``<data_dir>/backup_settings.json``
@@ -256,26 +255,16 @@ def get_global_settings() -> Settings:
256
255
 
257
256
 
258
257
  def reset_global_settings() -> None:
259
- """Public seam to drop the cached settings singleton.
258
+ """Drop the cached settings singleton so the next read rebuilds it.
260
259
 
261
260
  The in-process (embedded) server calls this at every start: a config-entry
262
261
  reload reuses the same Python process, so without an explicit reset the
263
262
  singleton built on the FIRST start would keep serving stale feature-flag /
264
263
  override values forever (the add-on gets fresh settings for free from its
265
- process restart).
266
- """
267
- _reset_global_settings()
268
-
269
-
270
- def _reset_global_settings() -> None:
271
- """Drop the cached settings singleton.
272
-
273
- Test seam so suites that mutate env vars can force a re-read
274
- without reaching into module-private state. Also used by the
275
- feature-flag and auto-backup settings POST handlers to publish a
276
- freshly edited override file value to runtime consumers
277
- (``get_global_settings`` is the only documented read path; the
278
- ``@with_auto_backup`` decorator reads it per tool call).
264
+ process restart). The settings POST handlers call it to publish a freshly
265
+ edited override file value to runtime consumers (``get_global_settings`` is
266
+ the only documented read path; the ``@with_auto_backup`` decorator reads it
267
+ per tool call), and tests that mutate env vars call it to force a re-read.
279
268
  """
280
269
  global _settings
281
270
  _settings = None
@@ -27,7 +27,7 @@ logger = logging.getLogger("ha_mcp.config")
27
27
  # INFO log so we don't spam addon logs on every Settings rebuild
28
28
  # now that the cascade-clear is gone and the file may carry truthy
29
29
  # sub-flag values long-term. Reset alongside
30
- # the Settings singleton in ``_reset_global_settings``.
30
+ # the Settings singleton in ``reset_global_settings``.
31
31
  _BETA_GATE_LOGGED: set[str] = set()
32
32
 
33
33
 
@@ -51,7 +51,8 @@ def ensure_rich_handler_compat() -> bool:
51
51
  Returns ``True`` when a shim is in place (freshly applied or already
52
52
  applied), ``False`` when none is needed or none could be applied — an
53
53
  unimportable ``rich``, an uninspectable ``__init__``, or a signature that
54
- already absorbs ``**kwargs``.
54
+ already absorbs ``**kwargs``. Importing ``ha_mcp`` applies it once; a
55
+ public module so tests can re-apply it to a stand-in ``RichHandler``.
55
56
  """
56
57
  try:
57
58
  from rich.logging import RichHandler
@@ -155,7 +155,7 @@ except OSError as exc: # pragma: no cover - packaging guard
155
155
  # __HA_MCP_CSS__ -> settings.css contents (inside <style>)
156
156
  # __HA_MCP_JS__ -> settings_js/ contents (inside <script>)
157
157
  # __HA_MCP_THEME_PREFS__ -> per-request server-seeded theme prefs JSON,
158
- # substituted in _render_settings_html()
158
+ # substituted in render_settings_html()
159
159
  # __HA_MCP_I18N__ -> selected merged translation catalog JSON
160
160
  # __HA_MCP_LANG__ -> selected locale code for the html lang attribute
161
161
  # __HA_MCP_DIR__ -> selected catalog text direction (ltr / rtl)
@@ -190,7 +190,7 @@ for _sentinel in (
190
190
  )
191
191
 
192
192
  # CSS and JS are injected once at import; __HA_MCP_THEME_PREFS__ remains in the
193
- # string and is substituted per-request in _render_settings_html().
193
+ # string and is substituted per-request in render_settings_html().
194
194
  _SETTINGS_HTML = _settings_html_template.replace(
195
195
  "__HA_MCP_CSS__", _SETTINGS_CSS
196
196
  ).replace("__HA_MCP_JS__", _SETTINGS_JS)
@@ -373,9 +373,11 @@ def _build_visibility_handlers(*, data_dir: Path) -> dict[str, Any]:
373
373
  }
374
374
 
375
375
 
376
- def _render_settings_html(request: Request | None = None) -> str:
377
- """Substitute theme preferences and the request-selected locale.
376
+ def render_settings_html(request: Request | None = None) -> str:
377
+ """Render the settings page every settings-page route serves.
378
378
 
379
+ Substitutes theme preferences and the request-selected locale. Public
380
+ because the JS behaviour tests load the served page from here.
379
381
  The ``server-prefs`` head script carries a ``data-prefs`` attribute
380
382
  with a placeholder token; request-time substitution keeps
381
383
  ``_SETTINGS_HTML`` a static import-time constant (and keeps the script
@@ -455,10 +457,10 @@ def build_settings_handlers(
455
457
  """
456
458
 
457
459
  async def _root_page(request: Request) -> HTMLResponse:
458
- return HTMLResponse(_render_settings_html(request))
460
+ return HTMLResponse(render_settings_html(request))
459
461
 
460
462
  async def _settings_page(request: Request) -> HTMLResponse:
461
- return HTMLResponse(_render_settings_html(request))
463
+ return HTMLResponse(render_settings_html(request))
462
464
 
463
465
  handlers: dict[str, Any] = {
464
466
  "root_page": _root_page,
@@ -21,7 +21,7 @@ from starlette.requests import Request
21
21
  from starlette.responses import JSONResponse
22
22
 
23
23
  from .._version import is_running_in_addon
24
- from ..config import _reset_global_settings, get_global_settings
24
+ from ..config import get_global_settings, reset_global_settings
25
25
  from ..errors import ErrorCode, create_error_response
26
26
  from . import _persistence, _supervisor
27
27
 
@@ -594,7 +594,7 @@ async def _save_advanced_settings(
594
594
  if write_err is not None:
595
595
  return write_err
596
596
 
597
- _reset_global_settings()
597
+ reset_global_settings()
598
598
  return JSONResponse(
599
599
  {
600
600
  "success": True,
@@ -38,9 +38,9 @@ from ..backup_manager import (
38
38
  from ..backup_todo import TodoListNotLoaded
39
39
  from ..config import (
40
40
  BACKUP_OVERRIDE_FIELDS,
41
- _reset_global_settings,
42
41
  get_backup_setting_origin,
43
42
  get_global_settings,
43
+ reset_global_settings,
44
44
  )
45
45
  from ..config_registry import SETTING_BOUNDS
46
46
  from ..errors import ErrorCode, create_error_response
@@ -557,7 +557,7 @@ def _apply_backup_config_file(clean: dict[str, Any]) -> JSONResponse:
557
557
  # File-mode auto-backup settings take effect immediately on the next
558
558
  # ``get_global_settings()`` read — no restart needed, hence
559
559
  # ``restart_required=False``.
560
- _reset_global_settings()
560
+ reset_global_settings()
561
561
  return JSONResponse(
562
562
  {"success": True, "applied": clean, "mode": "file", "restart_required": False}
563
563
  )
@@ -28,7 +28,7 @@ from starlette.requests import Request
28
28
  from starlette.responses import JSONResponse
29
29
 
30
30
  from .._version import get_version, is_embedded, is_running_in_addon
31
- from ..config import _reset_global_settings, get_global_settings
31
+ from ..config import get_global_settings, reset_global_settings
32
32
  from ..errors import ErrorCode, create_error_response
33
33
  from . import _persistence, _supervisor
34
34
 
@@ -833,7 +833,7 @@ async def _save_feature_flags(
833
833
  # Publish the change so the same process picks it up on the next
834
834
  # ``get_global_settings()`` call. ``restart_required=True`` because
835
835
  # feature flags gate tool registration / transforms at startup.
836
- _reset_global_settings()
836
+ reset_global_settings()
837
837
  return JSONResponse(
838
838
  {
839
839
  "success": True,
@@ -14,7 +14,7 @@ from collections import Counter
14
14
  from pathlib import Path
15
15
  from typing import Any
16
16
 
17
- from . import _locale_policy
17
+ from . import locale_policy
18
18
 
19
19
  _LOGGER = logging.getLogger(__name__)
20
20
 
@@ -328,11 +328,11 @@ def load_catalogs(
328
328
  catalogs[locale] = _load_catalog_file(
329
329
  path,
330
330
  best_effort_locale=(
331
- locale if _locale_policy.is_best_effort_locale(locale) else None
331
+ locale if locale_policy.is_best_effort_locale(locale) else None
332
332
  ),
333
333
  )
334
334
  except (ImportError, ValueError) as exc:
335
- if not _locale_policy.is_best_effort_locale(locale):
335
+ if not locale_policy.is_best_effort_locale(locale):
336
336
  raise
337
337
  _warn_best_effort_catalog(locale, path, exc)
338
338
 
@@ -344,7 +344,7 @@ def load_catalogs(
344
344
  strict_catalogs = {
345
345
  locale: catalog
346
346
  for locale, catalog in catalogs.items()
347
- if not _locale_policy.is_best_effort_locale(locale)
347
+ if not locale_policy.is_best_effort_locale(locale)
348
348
  }
349
349
  _validate_placeholder_parity(strict_catalogs)
350
350
  _validate_inline_markup(strict_catalogs)
@@ -344,7 +344,7 @@ def _get_backup_settings_override_path() -> Path:
344
344
 
345
345
  Sits next to ``tool_config.json`` in the same data dir. Web UI edits
346
346
  in standalone (non-addon) mode persist here; ``get_global_settings``
347
- reads the file on the next call after ``_reset_global_settings``.
347
+ reads the file on the next call after ``reset_global_settings``.
348
348
  """
349
349
  return get_data_dir() / "backup_settings.json"
350
350
 
@@ -125,7 +125,7 @@ def _load_theme_prefs() -> dict[str, str]:
125
125
  # Hand-edited values outside the offered sets are dropped on load
126
126
  # AND overwritten by the next save's RMW merge — leave a trail so
127
127
  # the edit's author can see why their value never sticks. Warn
128
- # once per key per process: _render_settings_html() calls this on
128
+ # once per key per process: render_settings_html() calls this on
129
129
  # every page view, and a permanently stale key (e.g. left behind
130
130
  # by a future version) must not spam the log forever (#1574
131
131
  # review).
@@ -1,4 +1,7 @@
1
- """Maintenance policy for intentionally best-effort locale catalogs."""
1
+ """Maintenance policy for intentionally best-effort locale catalogs.
2
+
3
+ Public: the catalog loader, the locale scripts and the tests share it.
4
+ """
2
5
 
3
6
  from __future__ import annotations
4
7
 
@@ -32,7 +32,7 @@ from .schemas import (
32
32
  )
33
33
 
34
34
 
35
- async def _stored_item(
35
+ async def stored_item(
36
36
  client: Any, helper_type: str, entity_id: str, unique_id: str
37
37
  ) -> dict[str, Any]:
38
38
  """The stored item from ``<type>/list`` (person nests its storage items)."""
@@ -71,7 +71,7 @@ async def _execute_legacy_update(
71
71
  fields: dict[str, Any],
72
72
  ) -> dict[str, Any]:
73
73
  """Update through Core's ``<type>/update`` WS command (no component)."""
74
- stored = await _stored_item(client, helper_type, entity_id, unique_id)
74
+ stored = await stored_item(client, helper_type, entity_id, unique_id)
75
75
  body = merged_update(helper_type, stored, name, item_icon, fields)
76
76
  result = await client.send_websocket_message(
77
77
  {**body, "type": f"{helper_type}/update", f"{helper_type}_id": unique_id}
@@ -79,7 +79,7 @@ async def _execute_legacy_update(
79
79
  if not result.get("success"):
80
80
  code = ws_failure_code(result)
81
81
  if code is ErrorCode.RESOURCE_NOT_FOUND:
82
- # The item vanished after _stored_item read it; report it the same way.
82
+ # The item vanished after stored_item read it; report it the same way.
83
83
  code = ErrorCode.CONFIG_NOT_FOUND
84
84
  raise_tool_error(
85
85
  create_error_response(
@@ -23,9 +23,9 @@ from ..util_helpers import filter_active_repairs, project_repair_fields
23
23
  from .base import SearchToolsBase
24
24
 
25
25
  __all__ = [
26
- "_OVERVIEW_AVAILABLE_FIELDS",
27
- "_OVERVIEW_ENTITY_FIELDS",
28
- "_OVERVIEW_INDEPENDENT_FIELDS",
26
+ "OVERVIEW_AVAILABLE_FIELDS",
27
+ "OVERVIEW_ENTITY_FIELDS",
28
+ "OVERVIEW_INDEPENDENT_FIELDS",
29
29
  "OverviewMixin",
30
30
  "_OverviewInputs",
31
31
  "logger",
@@ -73,8 +73,9 @@ class _OverviewSlices:
73
73
 
74
74
 
75
75
  # These disjoint sets partition every key documented by ha_get_overview's
76
- # fields parameter. Keep the manifest test in sync when the public schema changes.
77
- _OVERVIEW_INDEPENDENT_FIELDS = frozenset(
76
+ # fields parameter. Public so the fields-docstring drift test can check that
77
+ # partition; keep it in sync when the public schema changes.
78
+ OVERVIEW_INDEPENDENT_FIELDS = frozenset(
78
79
  {
79
80
  "success",
80
81
  "system_info",
@@ -108,7 +109,7 @@ _OVERVIEW_REPAIR_FIELDS = frozenset(
108
109
  )
109
110
 
110
111
 
111
- _OVERVIEW_ENTITY_FIELDS = frozenset(
112
+ OVERVIEW_ENTITY_FIELDS = frozenset(
112
113
  {
113
114
  "system_summary",
114
115
  "domain_stats",
@@ -123,7 +124,7 @@ _OVERVIEW_ENTITY_FIELDS = frozenset(
123
124
  )
124
125
 
125
126
 
126
- _OVERVIEW_AVAILABLE_FIELDS = _OVERVIEW_INDEPENDENT_FIELDS | _OVERVIEW_ENTITY_FIELDS
127
+ OVERVIEW_AVAILABLE_FIELDS = OVERVIEW_INDEPENDENT_FIELDS | OVERVIEW_ENTITY_FIELDS
127
128
 
128
129
 
129
130
  def _build_component_overview_request(inputs: _OverviewInputs) -> dict[str, Any]:
@@ -53,8 +53,9 @@ _CONFIG_BUCKETS: tuple[str, ...] = (
53
53
  # pins their presence (search_type at 17+ sites, domain_filter at 6,
54
54
  # area_filter at 1, message at 2), so callers verifiably depend on them.
55
55
  # All are documented as top-level keys + retained in
56
- # ``_ALWAYS_KEEP_PROJECTION``.
57
- _ENTITIES_BRANCH_SKIP_KEYS: tuple[str, ...] = (
56
+ # ``_ALWAYS_KEEP_PROJECTION``. Public so the fields-docstring drift test can
57
+ # require every emitted entities-branch key to be stripped or documented.
58
+ ENTITIES_BRANCH_SKIP_KEYS: tuple[str, ...] = (
58
59
  "results",
59
60
  "total_matches",
60
61
  "has_more",
@@ -522,7 +523,7 @@ def _apply_search_outcome(
522
523
  _merge_payload_metadata(
523
524
  response,
524
525
  payload,
525
- skip_keys=_ENTITIES_BRANCH_SKIP_KEYS,
526
+ skip_keys=ENTITIES_BRANCH_SKIP_KEYS,
526
527
  )
527
528
  elif label == "configs":
528
529
  for bucket in _CONFIG_BUCKETS:
@@ -267,8 +267,8 @@ _NON_CARD_CHILD_KEYS = ("elements",)
267
267
  # The card_type value that selects view badges, which are not cards.
268
268
  _BADGE_CARD_TYPE = "badge"
269
269
  # Bound on card nesting levels against pathological configs; real dashboards
270
- # nest a handful.
271
- _MAX_CARD_DEPTH = 50
270
+ # nest a handful. Public so tests can build a config at the boundary.
271
+ MAX_CARD_DEPTH = 50
272
272
  # Bound on non-card nesting inside one card, which keeps the recursive split far
273
273
  # below Python's recursion limit even at the card bound.
274
274
  _MAX_NODE_DEPTH = 100
@@ -513,17 +513,17 @@ def _walk_card(
513
513
  container only.
514
514
 
515
515
  Only a dict carrying a ``type`` key is matched as a card. Subtrees past
516
- ``_MAX_CARD_DEPTH`` card levels are recorded in ``frame.gaps.truncation``;
516
+ ``MAX_CARD_DEPTH`` card levels are recorded in ``frame.gaps.truncation``;
517
517
  cards carrying ``_NON_CARD_CHILD_KEYS`` in ``frame.gaps.uncovered``.
518
518
  """
519
519
  if not isinstance(card, dict):
520
520
  if frame.criteria.can_match_cards():
521
521
  frame.gaps.unread.append(jq_prefix)
522
522
  return []
523
- if frame.depth > _MAX_CARD_DEPTH:
523
+ if frame.depth > MAX_CARD_DEPTH:
524
524
  logger.warning(
525
525
  "Card-search depth bound (%d) exceeded at %s; not descending further",
526
- _MAX_CARD_DEPTH,
526
+ MAX_CARD_DEPTH,
527
527
  jq_prefix,
528
528
  )
529
529
  frame.gaps.truncation.append(jq_prefix)
@@ -1624,7 +1624,7 @@ class DevTools:
1624
1624
  Extracted verbatim from the inline branch: rejects env/addon-managed
1625
1625
  settings, removes any file override, and reports whether one existed.
1626
1626
  """
1627
- from ..config import _reset_global_settings
1627
+ from ..config import reset_global_settings
1628
1628
 
1629
1629
  if origin == "env":
1630
1630
  raise_tool_error(
@@ -1646,7 +1646,7 @@ class DevTools:
1646
1646
  had_override = origin == "file"
1647
1647
  if had_override:
1648
1648
  await self._merge_file_override({setting: _REMOVE})
1649
- _reset_global_settings()
1649
+ reset_global_settings()
1650
1650
  return {
1651
1651
  "success": True,
1652
1652
  "data": {
@@ -1676,8 +1676,8 @@ class DevTools:
1676
1676
  """
1677
1677
  from ..config import (
1678
1678
  BETA_FEATURE_FIELDS,
1679
- _reset_global_settings,
1680
1679
  get_global_settings,
1680
+ reset_global_settings,
1681
1681
  )
1682
1682
 
1683
1683
  if value is None:
@@ -1754,7 +1754,7 @@ class DevTools:
1754
1754
  mode = "addon"
1755
1755
  else:
1756
1756
  await self._merge_file_override({setting: coerced})
1757
- _reset_global_settings()
1757
+ reset_global_settings()
1758
1758
  mode = "file"
1759
1759
  return {
1760
1760
  "success": True,
@@ -36,9 +36,9 @@ from .search.entities import (
36
36
  _validate_result_field_names,
37
37
  )
38
38
  from .search.overview import (
39
- _OVERVIEW_AVAILABLE_FIELDS,
40
- _OVERVIEW_ENTITY_FIELDS,
41
- _OVERVIEW_INDEPENDENT_FIELDS,
39
+ OVERVIEW_AVAILABLE_FIELDS,
40
+ OVERVIEW_ENTITY_FIELDS,
41
+ OVERVIEW_INDEPENDENT_FIELDS,
42
42
  OverviewMixin,
43
43
  _OverviewInputs,
44
44
  )
@@ -640,9 +640,9 @@ class SearchTools(ComponentSearchMixin, OverviewMixin, StateMixin):
640
640
  raise_tool_error(create_validation_error(str(exc), parameter="domains"))
641
641
 
642
642
  requested_fields = set(parsed_fields or [])
643
- recognized_fields = requested_fields & _OVERVIEW_INDEPENDENT_FIELDS
643
+ recognized_fields = requested_fields & OVERVIEW_INDEPENDENT_FIELDS
644
644
  use_independent_collectors = (
645
- parsed_fields is not None and not requested_fields & _OVERVIEW_ENTITY_FIELDS
645
+ parsed_fields is not None and not requested_fields & OVERVIEW_ENTITY_FIELDS
646
646
  )
647
647
  if use_independent_collectors:
648
648
  result = await self._collect_independent_overview(
@@ -700,7 +700,7 @@ class SearchTools(ComponentSearchMixin, OverviewMixin, StateMixin):
700
700
  projected = project_fields(
701
701
  result,
702
702
  parsed_fields,
703
- available_fields=_OVERVIEW_AVAILABLE_FIELDS,
703
+ available_fields=OVERVIEW_AVAILABLE_FIELDS,
704
704
  )
705
705
  sidecar_url = live_sidecar_url()
706
706
  if sidecar_url:
@@ -61,7 +61,7 @@ _LOVELACE_DASHBOARD_PREFIX = "lovelace.dashboards."
61
61
  # wrapper. The parity invariant (keys == PACKAGES_ONLY_YAML_KEYS, and
62
62
  # every value is a real Settings field) is enforced by
63
63
  # test_yaml_dashboards.py::test_flag_map_matches_packages_only_keys.
64
- _YAML_PACKAGES_FLAG_BY_KEY = {
64
+ YAML_PACKAGES_FLAG_BY_KEY = {
65
65
  "automation": "enable_yaml_packages_automation",
66
66
  "script": "enable_yaml_packages_script",
67
67
  "scene": "enable_yaml_packages_scene",
@@ -105,12 +105,12 @@ def _disabled_packages_keys(settings: Any) -> list[str]:
105
105
  irrelevant on the wire.
106
106
 
107
107
  Uses ``getattr`` without a default so a future rename that breaks the
108
- ``_YAML_PACKAGES_FLAG_BY_KEY`` → ``Settings`` mapping raises loudly
108
+ ``YAML_PACKAGES_FLAG_BY_KEY`` → ``Settings`` mapping raises loudly
109
109
  instead of silently treating the key as disabled (a dead toggle).
110
110
  """
111
111
  return sorted(
112
112
  key
113
- for key, flag in _YAML_PACKAGES_FLAG_BY_KEY.items()
113
+ for key, flag in YAML_PACKAGES_FLAG_BY_KEY.items()
114
114
  if not getattr(settings, flag)
115
115
  )
116
116
 
@@ -41,11 +41,12 @@ class PythonSandboxExecutionError(PythonSandboxError):
41
41
  # can carry tokens / passwords / device addresses, and Python's default
42
42
  # repr happily embeds dict and list values into KeyError/TypeError text.
43
43
  # 240 chars is enough to identify the failure (exception type + a short
44
- # snippet) without pasting the input config back to the caller.
45
- _EXECUTION_ERROR_TEXT_LIMIT = 240
44
+ # snippet) without pasting the input config back to the caller. Public so
45
+ # tests can check the cap.
46
+ EXECUTION_ERROR_TEXT_LIMIT = 240
46
47
 
47
48
 
48
- def _truncate_for_error(text: str, limit: int = _EXECUTION_ERROR_TEXT_LIMIT) -> str:
49
+ def _truncate_for_error(text: str, limit: int = EXECUTION_ERROR_TEXT_LIMIT) -> str:
49
50
  if len(text) <= limit:
50
51
  return text
51
52
  return text[: limit - 3] + "..."
@@ -233,8 +234,9 @@ BLOCKED_FUNCTIONS = {
233
234
  # transforms — type checks, length, numeric/string coercion, simple
234
235
  # collection helpers. Expanding this list is fine if another pure builtin
235
236
  # is genuinely needed; adding anything that touches the filesystem, network,
236
- # or interpreter state is not.
237
- _SAFE_BUILTINS: dict[str, Any] = {
237
+ # or interpreter state is not. Public, like SAFE_METHODS, so tests can check
238
+ # the security documentation against it.
239
+ SAFE_BUILTINS: dict[str, Any] = {
238
240
  "isinstance": isinstance,
239
241
  "len": len,
240
242
  "range": range,
@@ -383,7 +385,7 @@ def safe_execute_expression(
383
385
  )
384
386
 
385
387
  safe_globals: dict[str, Any] = {
386
- "__builtins__": dict(_SAFE_BUILTINS),
388
+ "__builtins__": dict(SAFE_BUILTINS),
387
389
  "__name__": "__main__",
388
390
  "__doc__": None,
389
391
  }