ha-mcp-dev 9.1.0.dev3339__tar.gz → 9.1.0.dev3344__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 (836) hide show
  1. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/PKG-INFO +1 -1
  2. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/pyproject.toml +1 -1
  3. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/pyproject.toml.orig +1 -1
  4. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/read_only.py +4 -31
  5. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/en.json +1 -1
  6. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/stdio_settings_sidecar.py +32 -33
  7. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tool_dispatch.py +23 -0
  8. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_search.py +3 -3
  9. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/visibility/enforcement.py +25 -26
  10. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/LICENSE +0 -0
  11. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/README.md +0 -0
  12. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/__init__.py +0 -0
  13. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/__main__.py +0 -0
  14. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_pypi_marker +0 -0
  15. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_rich_compat.py +0 -0
  16. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/__init__.py +0 -0
  17. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  18. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  19. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  20. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  21. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  22. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  23. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  24. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  25. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  26. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  27. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  28. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  29. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  30. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  31. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  32. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  33. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  34. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  35. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  36. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev_security.py +0 -0
  37. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  38. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  39. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  40. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  41. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  42. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  43. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  44. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  45. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  46. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  47. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  48. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  49. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  50. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  51. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  52. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  53. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  54. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  55. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  56. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  57. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  58. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  59. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  60. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  61. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  62. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  63. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  64. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  65. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  66. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  67. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  68. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  69. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  70. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  71. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  72. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  73. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  74. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  75. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  76. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  77. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  78. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/mixins/skills.py +0 -0
  79. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  80. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  81. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  82. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  83. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  84. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  85. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  86. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  87. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  88. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  89. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  90. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  91. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  92. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  93. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  94. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  95. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  96. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  97. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  98. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  99. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  100. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  101. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  102. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  103. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  104. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  105. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  106. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  107. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  108. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  109. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  110. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  111. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  112. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  113. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  114. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  115. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  116. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +0 -0
  117. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  118. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  119. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  120. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  121. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  122. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  123. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  124. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  125. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  126. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  127. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  128. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  129. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  130. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  131. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  132. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  133. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  134. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  135. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  136. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  137. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  138. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  139. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  140. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  141. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  142. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  143. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  144. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  145. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  146. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  147. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  148. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  149. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  150. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  151. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  152. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  153. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  154. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  155. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  156. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  157. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  158. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  159. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  160. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  161. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  162. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  163. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  164. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  165. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  166. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  167. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  168. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  169. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  170. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  171. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  172. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  173. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  174. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  175. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  176. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  177. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  178. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  179. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  180. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  181. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  182. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  183. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  184. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  185. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  186. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  187. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  188. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  189. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/mixins/extensions.py +0 -0
  190. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  191. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  192. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  193. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  194. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  195. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  196. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  197. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  198. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  199. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  200. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  201. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  202. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  203. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  204. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  205. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  206. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  207. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  208. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  209. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  210. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  211. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  212. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  213. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  214. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  215. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  216. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  217. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  218. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  219. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  220. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  221. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  222. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  223. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  224. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  225. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  226. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  227. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  228. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  229. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  230. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  231. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  232. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  233. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  234. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  235. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  236. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  237. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  238. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/skills/__init__.py +0 -0
  239. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/skills/_constants.py +0 -0
  240. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/skills/_resources.py +0 -0
  241. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/skills/_snapshot.py +0 -0
  242. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/skills/_source.py +0 -0
  243. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/skills/client.py +0 -0
  244. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/skills/extension.py +0 -0
  245. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/skills/models.py +0 -0
  246. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  247. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  248. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  249. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  250. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  251. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  252. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  253. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  254. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  255. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  256. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  257. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  258. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  259. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  260. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  261. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  262. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  263. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  264. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  265. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  266. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  267. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  268. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  269. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  270. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  271. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  272. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  273. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  274. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  275. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  276. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  277. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  278. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  279. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  280. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  281. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  282. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  283. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  284. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  285. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  286. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  287. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  288. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  289. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  290. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  291. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  292. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  293. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  294. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  295. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  296. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  297. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  298. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  299. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  300. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  301. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  302. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  303. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  304. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  305. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  306. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  307. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  308. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  309. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  310. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  311. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  312. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  313. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  314. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  315. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  316. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  317. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  318. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  319. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  320. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  321. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  322. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  323. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  324. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  325. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  326. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  327. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  328. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  329. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  330. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  331. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  332. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  333. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  334. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  335. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  336. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  337. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  338. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  339. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  340. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  341. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  342. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  343. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  344. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  345. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  346. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  347. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  348. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  349. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  350. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  351. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  352. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  353. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  354. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  355. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  356. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  357. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  358. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  359. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  360. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  361. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  362. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  363. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  364. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  365. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  366. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  367. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  368. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  369. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  370. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  371. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  372. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  373. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  374. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  375. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  376. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  377. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  378. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  379. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  380. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  381. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  382. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  383. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  384. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  385. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  386. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  387. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  388. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  389. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  390. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  391. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  392. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  393. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  394. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  395. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  396. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  397. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  398. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  399. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  400. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  401. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  402. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  403. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/_request_clock.py +0 -0
  404. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  405. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  406. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  407. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  408. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  409. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  410. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  411. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  412. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  413. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  414. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  415. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  416. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  417. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  418. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  419. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  420. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  421. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  422. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  423. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  424. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  425. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  426. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  427. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  428. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  429. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  430. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  431. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  432. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  433. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  434. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  435. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  436. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  437. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  438. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  439. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  440. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/requirements.txt +0 -0
  441. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  442. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  443. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  444. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  445. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  446. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  447. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  448. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  449. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  450. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  451. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  452. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  453. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  454. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  455. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  456. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  457. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  458. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  459. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  460. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  461. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  462. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  463. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  464. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  465. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  466. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  467. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  468. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  469. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  470. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  471. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  472. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  473. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  474. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  475. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  476. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  477. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  478. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  479. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  480. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  481. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  482. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  483. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  484. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  485. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  486. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  487. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  488. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  489. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  490. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  491. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  492. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  493. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  494. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  495. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  496. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  497. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/_version.py +0 -0
  498. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/app_discovery.py +0 -0
  499. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/auth/__init__.py +0 -0
  500. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/auth/consent_form.py +0 -0
  501. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/auth/iss_stamp.py +0 -0
  502. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/auth/oidc_compat.py +0 -0
  503. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/auth/provider.py +0 -0
  504. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/backup_dashboards.py +0 -0
  505. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/backup_diff.py +0 -0
  506. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/backup_entities.py +0 -0
  507. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/backup_entity_ids.py +0 -0
  508. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/backup_helper_target.py +0 -0
  509. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/backup_integrations.py +0 -0
  510. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/backup_manager.py +0 -0
  511. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/backup_tags.py +0 -0
  512. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/backup_todo.py +0 -0
  513. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/backup_zones.py +0 -0
  514. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/browser_landing.py +0 -0
  515. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/client/__init__.py +0 -0
  516. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/client/admin_routes.py +0 -0
  517. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/client/error_log_journald.py +0 -0
  518. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/client/event_listeners.py +0 -0
  519. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/client/models.py +0 -0
  520. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/client/rest_client.py +0 -0
  521. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/client/supervisor_client.py +0 -0
  522. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/client/websocket_client.py +0 -0
  523. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/client/websocket_listener.py +0 -0
  524. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/config.py +0 -0
  525. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/config_backup.py +0 -0
  526. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/config_meta.py +0 -0
  527. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/config_overrides.py +0 -0
  528. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/config_registry.py +0 -0
  529. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/config_settings.py +0 -0
  530. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  531. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  532. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  533. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/dashboard_screenshot/engine_compat.py +0 -0
  534. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  535. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  536. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/dashboard_screenshot/theme_check.py +0 -0
  537. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  538. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/errors.py +0 -0
  539. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/ha_request_queue.py +0 -0
  540. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  541. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/http_transport.py +0 -0
  542. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/image_info.py +0 -0
  543. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/ipv6_lan_guard.py +0 -0
  544. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/listen_sockets.py +0 -0
  545. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/llm_exposure.py +0 -0
  546. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/log_filters.py +0 -0
  547. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/mcp_client_context.py +0 -0
  548. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/policy/__init__.py +0 -0
  549. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/policy/approval_queue.py +0 -0
  550. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/policy/decision_pin.py +0 -0
  551. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/policy/decisions.py +0 -0
  552. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/policy/editing.py +0 -0
  553. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/policy/evaluator.py +0 -0
  554. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/policy/events.py +0 -0
  555. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/policy/handlers.py +0 -0
  556. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/policy/middleware.py +0 -0
  557. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/policy/model.py +0 -0
  558. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/policy/mrtr.py +0 -0
  559. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/policy/persistence.py +0 -0
  560. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/policy/server_channels.py +0 -0
  561. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/policy/value_sources.py +0 -0
  562. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/py.typed +0 -0
  563. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/redaction.py +0 -0
  564. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/renamed_tools.py +0 -0
  565. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  566. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  567. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  568. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
  569. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  570. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  571. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  572. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  573. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  574. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  575. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  576. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  577. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  578. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  579. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  580. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
  581. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  582. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/server.py +0 -0
  583. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/server_instructions.py +0 -0
  584. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/server_lifespan.py +0 -0
  585. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/server_tool_text.py +0 -0
  586. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/__init__.py +0 -0
  587. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  588. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  589. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  590. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/_handlers_oauth_callbacks.py +0 -0
  591. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  592. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  593. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  594. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  595. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  596. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  597. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  598. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/_theme.py +0 -0
  599. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  600. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  601. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  602. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  603. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  604. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  605. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  606. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  607. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/hu.json +0 -0
  608. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  609. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  610. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  611. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  612. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  613. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  614. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  615. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  616. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  617. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/settings.css +0 -0
  618. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/settings.html +0 -0
  619. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
  620. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
  621. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
  622. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
  623. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
  624. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
  625. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
  626. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
  627. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
  628. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/settings_ui/settings_js/10_oauth_callbacks.js +0 -0
  629. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/smoke_test.py +0 -0
  630. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/storage_helper_types.py +0 -0
  631. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/strict_bps.py +0 -0
  632. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/__init__.py +0 -0
  633. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/addon_connection_hints.py +0 -0
  634. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/area_messages.py +0 -0
  635. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/auto_backup.py +0 -0
  636. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/automation_errors.py +0 -0
  637. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/backup.py +0 -0
  638. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/backup_access.py +0 -0
  639. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/backup_on_demand.py +0 -0
  640. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/backup_snapshot.py +0 -0
  641. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/backup_snapshot_restore.py +0 -0
  642. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  643. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/best_practice_result.py +0 -0
  644. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  645. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  646. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  647. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/blueprint_write.py +0 -0
  648. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/bug_report_config.py +0 -0
  649. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/bug_report_redaction.py +0 -0
  650. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/bug_report_sources.py +0 -0
  651. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/bug_report_templates.py +0 -0
  652. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/bulk_selector.py +0 -0
  653. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/coercion.py +0 -0
  654. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/component_api.py +0 -0
  655. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/component_automation.py +0 -0
  656. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/component_config_entries.py +0 -0
  657. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/component_config_reads.py +0 -0
  658. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  659. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/component_devices.py +0 -0
  660. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/component_helper_collections.py +0 -0
  661. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/component_registries.py +0 -0
  662. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  663. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/component_todo.py +0 -0
  664. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_entry_backup.py +0 -0
  665. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  666. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  667. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
  668. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  669. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  670. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  671. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
  672. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  673. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_file_visibility.py +0 -0
  674. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
  675. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
  676. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_helpers/create.py +0 -0
  677. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
  678. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
  679. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_helpers/icon_route.py +0 -0
  680. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
  681. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
  682. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
  683. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
  684. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_helpers/update.py +0 -0
  685. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
  686. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
  687. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_write_errors.py +0 -0
  688. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/config_write_helpers.py +0 -0
  689. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/core_contract.py +0 -0
  690. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/dashboard_card_describe.py +0 -0
  691. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  692. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
  693. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/dashboard_read_errors.py +0 -0
  694. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/dev_backup.py +0 -0
  695. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/device_control.py +0 -0
  696. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/device_enrichment.py +0 -0
  697. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
  698. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/energy_preferences.py +0 -0
  699. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/entity_expose_batch.py +0 -0
  700. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
  701. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/entity_registration.py +0 -0
  702. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/entity_removal.py +0 -0
  703. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/entity_update_fields.py +0 -0
  704. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  705. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/event_call.py +0 -0
  706. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/event_listener_fields.py +0 -0
  707. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/flow_helper_lookup.py +0 -0
  708. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/hacs_backend.py +0 -0
  709. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/hacs_registration.py +0 -0
  710. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/helper_flows.py +0 -0
  711. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/helpers.py +0 -0
  712. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/history_response.py +0 -0
  713. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/integration_entry_state.py +0 -0
  714. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
  715. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/log_common.py +0 -0
  716. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/log_sources.py +0 -0
  717. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  718. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/log_sources_logbook.py +0 -0
  719. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  720. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/radio/__init__.py +0 -0
  721. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/radio/base.py +0 -0
  722. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/radio/matter.py +0 -0
  723. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/radio/thread.py +0 -0
  724. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  725. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/radio/zwave.py +0 -0
  726. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
  727. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/recorder_errors.py +0 -0
  728. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/reference_validator.py +0 -0
  729. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/registry.py +0 -0
  730. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  731. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/resource_codec.py +0 -0
  732. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/resource_patch.py +0 -0
  733. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/response_helpers.py +0 -0
  734. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/scene_discovery.py +0 -0
  735. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/search/__init__.py +0 -0
  736. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/search/base.py +0 -0
  737. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/search/component.py +0 -0
  738. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/search/entities.py +0 -0
  739. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/search/legacy.py +0 -0
  740. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/search/modes.py +0 -0
  741. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/search/overview.py +0 -0
  742. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/search/response.py +0 -0
  743. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/search/state.py +0 -0
  744. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/server_version.py +0 -0
  745. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  746. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  747. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  748. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  749. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  750. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  751. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  752. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  753. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  754. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  755. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/statistics_calendar.py +0 -0
  756. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/statistics_helpers.py +0 -0
  757. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/statistics_resets.py +0 -0
  758. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/system_restart.py +0 -0
  759. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tool_hints.py +0 -0
  760. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  761. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_addons.py +0 -0
  762. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_areas.py +0 -0
  763. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  764. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  765. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  766. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_calendar.py +0 -0
  767. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_camera.py +0 -0
  768. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_categories.py +0 -0
  769. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_code.py +0 -0
  770. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  771. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  772. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  773. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  774. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  775. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  776. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_dev.py +0 -0
  777. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_energy.py +0 -0
  778. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_entities.py +0 -0
  779. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  780. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_groups.py +0 -0
  781. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_hacs.py +0 -0
  782. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_history.py +0 -0
  783. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_integrations.py +0 -0
  784. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_labels.py +0 -0
  785. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_logs.py +0 -0
  786. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_radio.py +0 -0
  787. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_registry.py +0 -0
  788. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_resources.py +0 -0
  789. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  790. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_service.py +0 -0
  791. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_services.py +0 -0
  792. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_system.py +0 -0
  793. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_themes.py +0 -0
  794. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_todo.py +0 -0
  795. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_traces.py +0 -0
  796. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_updates.py +0 -0
  797. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_utility.py +0 -0
  798. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  799. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  800. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  801. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/tools_zones.py +0 -0
  802. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/update_categories.py +0 -0
  803. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/util_helpers.py +0 -0
  804. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/validation_middleware.py +0 -0
  805. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/tools/ws_waiters.py +0 -0
  806. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/transforms/__init__.py +0 -0
  807. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/transforms/categorized_search.py +0 -0
  808. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/transforms/compact_params.py +0 -0
  809. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/transforms/component_helpers.py +0 -0
  810. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/transforms/component_search.py +0 -0
  811. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  812. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  813. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/transport_security.py +0 -0
  814. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/update_check.py +0 -0
  815. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/__init__.py +0 -0
  816. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/config_hash.py +0 -0
  817. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/config_write_lock.py +0 -0
  818. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  819. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/data_paths.py +0 -0
  820. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  821. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/domain_handlers.py +0 -0
  822. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/entity_membership.py +0 -0
  823. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  824. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  825. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  826. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/operation_manager.py +0 -0
  827. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/python_sandbox.py +0 -0
  828. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  829. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/skill_loader.py +0 -0
  830. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/utils/usage_logger.py +0 -0
  831. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/visibility/__init__.py +0 -0
  832. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/visibility/config_files.py +0 -0
  833. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/visibility/identifier_aliases.py +0 -0
  834. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/visibility/model.py +0 -0
  835. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/visibility/persistence.py +0 -0
  836. {ha_mcp_dev-9.1.0.dev3339 → ha_mcp_dev-9.1.0.dev3344}/src/ha_mcp/visibility/resolver.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 9.1.0.dev3339
3
+ Version: 9.1.0.dev3344
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Keywords: mcp,home-assistant,ai,automation,smart-home
6
6
  Author: Julien
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.1.0.dev3339"
7
+ version = "9.1.0.dev3344"
8
8
  description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13,<3.15"
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.1.0.dev3339"
7
+ version = "9.1.0.dev3344"
8
8
  description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
9
9
  readme = "README.md"
10
10
  # Upper bound widened to <3.15 so the package installs on Home Assistant's
@@ -31,7 +31,6 @@ whether the call is a read (allowed) or a write (blocked).
31
31
 
32
32
  from __future__ import annotations
33
33
 
34
- import json
35
34
  import logging
36
35
  from collections.abc import Awaitable, Callable, Iterator, Sequence
37
36
  from contextlib import contextmanager
@@ -49,7 +48,7 @@ from ha_mcp._vendor.fastmcp.tools import Tool
49
48
  from .config import get_global_settings
50
49
  from .errors import ErrorCode, create_error_response
51
50
  from .renamed_tools import current_tool_name
52
- from .tool_dispatch import CALL_PROXY_META_TOOLS
51
+ from .tool_dispatch import CALL_PROXY_META_TOOLS, coerce_proxy_arguments
53
52
  from .tools.helpers import raise_tool_error
54
53
 
55
54
  if TYPE_CHECKING:
@@ -477,32 +476,6 @@ class ReadOnlyMiddleware(Middleware):
477
476
  return "write"
478
477
  return "unknown"
479
478
 
480
- @staticmethod
481
- def _coerce_arguments(arguments: Any) -> dict[str, Any] | None:
482
- """Normalise a proxy envelope's ``arguments`` to a dict or None.
483
-
484
- The categorized proxies tolerate ``arguments`` arriving as a JSON
485
- string (small models sometimes serialize it) and json.loads it
486
- AFTER this middleware runs (categorized_search.py ~313-352). So:
487
- a dict is used as-is; an absent value (``None``) becomes ``{}``
488
- (a legitimate no-argument call, not malformed); a string is
489
- parsed and only a JSON *object* yields a dict. Anything else — an
490
- unparseable string, a non-dict JSON value (list/scalar/null), or
491
- a non-str/non-dict type — returns None, meaning "malformed
492
- envelope".
493
- """
494
- if isinstance(arguments, dict):
495
- return arguments
496
- if arguments is None:
497
- return {}
498
- if isinstance(arguments, str):
499
- try:
500
- parsed = json.loads(arguments)
501
- except (json.JSONDecodeError, ValueError):
502
- return None
503
- return parsed if isinstance(parsed, dict) else None
504
- return None
505
-
506
479
  @classmethod
507
480
  def _unwrap_proxy_call(
508
481
  cls,
@@ -518,7 +491,7 @@ class ReadOnlyMiddleware(Middleware):
518
491
  lets the middleware decide on the inner call first. Mirrors the
519
492
  proxy's own double-wrap unwrapping.
520
493
 
521
- ``arguments`` is coerced at every level (see _coerce_arguments)
494
+ ``arguments`` is coerced at every level (see coerce_proxy_arguments)
522
495
  because the proxy accepts it as a JSON string. Returns None when
523
496
  there is no usable envelope — including when ``arguments`` is a
524
497
  MALFORMED string (json.loads fails, or the JSON is not an object).
@@ -528,7 +501,7 @@ class ReadOnlyMiddleware(Middleware):
528
501
  (categorized_search.py ~313-352), so no write can occur.
529
502
  """
530
503
  name = args.get("name")
531
- arguments = cls._coerce_arguments(args.get("arguments"))
504
+ arguments = coerce_proxy_arguments(args.get("arguments"))
532
505
  while (
533
506
  isinstance(name, str)
534
507
  and name in CALL_PROXY_META_TOOLS
@@ -536,7 +509,7 @@ class ReadOnlyMiddleware(Middleware):
536
509
  and isinstance(arguments.get("name"), str)
537
510
  ):
538
511
  name = arguments.get("name")
539
- arguments = cls._coerce_arguments(arguments.get("arguments"))
512
+ arguments = coerce_proxy_arguments(arguments.get("arguments"))
540
513
  if not isinstance(name, str):
541
514
  return None
542
515
  if arguments is None:
@@ -519,7 +519,7 @@
519
519
  "advanced.sidecar_pin_port.label": "Settings UI sidecar port",
520
520
  "advanced.sidecar_pin_port.help": "0 picks a free port on first start and keeps it for later restarts; a port in the range pins a preferred port (falls back to a free one if taken).",
521
521
  "advanced.enable_dev_mode.label": "Developer mode",
522
- "advanced.enable_dev_mode.help": "⚠ Registers hidden tools that can change settings and replace the running server. Development and testing only.",
522
+ "advanced.enable_dev_mode.help": "⚠ Registers hidden tools that can change settings and replace the running server. It also may bypass some entity visibility or other limitations. Development and testing only.",
523
523
  "advanced.dev_tools_security_policy_access.label": "Dev tools security policy access",
524
524
  "advanced.dev_tools_security_policy_access.help": "⚠ While developer mode is on, lets the developer tools rewrite tool security policies, add or remove per-tool approval gates, and approve or deny pending approvals on your behalf — an AI agent can accept its own gated calls. Policy testing only. Takes effect without a restart.",
525
525
  "addon.secret_path.name": "Secret path override",
@@ -62,7 +62,7 @@ import socket
62
62
  import subprocess
63
63
  import sys
64
64
  import threading
65
- from collections.abc import Awaitable, Callable, Iterator
65
+ from collections.abc import AsyncIterator, Awaitable, Callable, Iterator
66
66
  from pathlib import Path
67
67
  from typing import TYPE_CHECKING, Any
68
68
 
@@ -183,12 +183,7 @@ def _save_sidecar_state(port: int, secret_path: str) -> None:
183
183
 
184
184
 
185
185
  def read_sidecar_url() -> str | None:
186
- """Return the current sidecar URL, or None if no sidecar is running.
187
-
188
- Reads ``~/.ha-mcp/ui.url`` if present. Consumed by
189
- ``ha_get_overview`` to surface the URL to the LLM (and through it,
190
- the user) on every overview call.
191
- """
186
+ """Return the URL recorded in ``ui.url``, or None when absent/unreadable."""
192
187
  try:
193
188
  return _url_file().read_text().strip() or None
194
189
  except FileNotFoundError:
@@ -198,6 +193,14 @@ def read_sidecar_url() -> str | None:
198
193
  return None
199
194
 
200
195
 
196
+ def live_sidecar_url() -> str | None:
197
+ """Return the URL ``ha_get_overview`` may surface: UI enabled, recorded pid alive."""
198
+ pid = _read_recorded_pid()
199
+ if _is_disabled() or pid is None or not _pid_alive(pid):
200
+ return None
201
+ return read_sidecar_url()
202
+
203
+
201
204
  def _is_disabled() -> bool:
202
205
  """Check whether the sidecar should be skipped."""
203
206
  val = os.environ.get("HA_MCP_DISABLE_SETTINGS_UI", "").strip().lower()
@@ -817,10 +820,10 @@ def _bind_listener(preferred: int, source: str) -> socket.socket:
817
820
  def maybe_spawn(prepare: Callable[[], None] | None = None) -> None:
818
821
  """Retire any previous sidecar and spawn a fresh one.
819
822
 
820
- Called once from stdio ``main()`` after argument validation. No-op
821
- when the sidecar is disabled (env var or sentinel), when a
822
- concurrent parent already holds the spawn lock, or when subprocess
823
- spawn raises (best effort; the MCP server continues regardless).
823
+ Called once from stdio ``main()`` after argument validation. When the
824
+ sidecar is disabled (env var or sentinel) it only retires a running one
825
+ (#2954). No-op when a concurrent parent already holds the spawn lock or
826
+ when subprocess spawn raises (best effort; the MCP server continues).
824
827
 
825
828
  A previously spawned sidecar is never reused (issue #2131): it
826
829
  serves the code and environment of the parent that spawned it, which
@@ -838,6 +841,9 @@ def maybe_spawn(prepare: Callable[[], None] | None = None) -> None:
838
841
  "Settings UI sidecar disabled (env var or %s sentinel); skipping spawn.",
839
842
  _disabled_sentinel().name,
840
843
  )
844
+ with _spawn_lock() as acquired:
845
+ if acquired:
846
+ _shutdown_existing_sidecar()
841
847
  return
842
848
 
843
849
  # Serialize concurrent spawn attempts. Two parent stdio processes
@@ -953,10 +959,10 @@ def _do_spawn() -> None:
953
959
  if log_handle is not None:
954
960
  log_handle.close()
955
961
  return
962
+ # Reap the child on exit: a zombie still passes os.kill(pid, 0) (#2954).
963
+ threading.Thread(target=proc.wait, name="sidecar-reaper", daemon=True).start()
956
964
 
957
- # The child writes its own pid/url file once it's bound — but log the
958
- # spawn here so users grepping the parent stderr see something
959
- # immediately, even before the child reports back.
965
+ # Log now so parent stderr shows the spawn before the child publishes.
960
966
  logger.info(
961
967
  "Spawned settings UI sidecar pid=%d (log: %s). URL written to %s once ready.",
962
968
  proc.pid,
@@ -1131,13 +1137,6 @@ def _write_pid_url(url: str) -> None:
1131
1137
  pid_path.unlink()
1132
1138
 
1133
1139
 
1134
- # Note: a custom ``_install_shutdown_handlers`` lived here previously.
1135
- # Removed because uvicorn's ``Server.run()`` already installs SIGTERM /
1136
- # SIGINT handlers that set ``should_exit = True`` — the same behavior
1137
- # the custom handler provided. The /shutdown HTTP endpoint reaches the
1138
- # same stop callable via ``app.state.shutdown_state`` and is unaffected.
1139
-
1140
-
1141
1140
  def _build_shutdown_handler(
1142
1141
  shutdown_lock: threading.Lock,
1143
1142
  shutdown_state: dict[str, Callable[[], None] | None],
@@ -1348,12 +1347,18 @@ def _build_app(
1348
1347
  )
1349
1348
  )
1350
1349
 
1350
+ # uvicorn re-raises a captured SIGTERM after shutdown, killing the process
1351
+ # before run_main's finally; app shutdown is the last code a signal reaches.
1352
+ @contextlib.asynccontextmanager
1353
+ async def _lifespan(_app: Any) -> AsyncIterator[None]:
1354
+ yield
1355
+ _cleanup_owned_serving_files()
1356
+
1351
1357
  app = Starlette(
1352
1358
  routes=routes,
1353
1359
  middleware=[Middleware(SecurityMiddleware)],
1360
+ lifespan=_lifespan,
1354
1361
  )
1355
- # Stash the shutdown_state on the app so run_main() can install the
1356
- # uvicorn stop callable into it once the server is built.
1357
1362
  app.state.shutdown_state = shutdown_state
1358
1363
  app.state.shutdown_lock = shutdown_lock
1359
1364
  return app
@@ -1438,10 +1443,8 @@ def run_main() -> int:
1438
1443
  def _stop() -> None:
1439
1444
  server.should_exit = True
1440
1445
 
1441
- # Wire the stop callable into app state so the /shutdown HTTP
1442
- # endpoint can reach it. OS signals (SIGTERM / SIGINT) are handled
1443
- # by uvicorn's own ``Server.run()`` installation — see the note
1444
- # earlier in this module for why we don't install our own.
1446
+ # Wire the stop callable into app state so the /shutdown HTTP endpoint
1447
+ # can reach it; uvicorn's ``Server.run()`` handles SIGTERM / SIGINT.
1445
1448
  with app.state.shutdown_lock:
1446
1449
  app.state.shutdown_state["stop"] = _stop
1447
1450
 
@@ -1465,12 +1468,8 @@ def run_main() -> int:
1465
1468
  # exists to close.
1466
1469
  server.run(sockets=[listener])
1467
1470
  finally:
1468
- # Best-effort cleanup of serving files on graceful exit — but only
1469
- # the ones this process still owns. The retire wait in
1470
- # _shutdown_existing_sidecar is bounded, so a slow exit can outlive
1471
- # its replacement's file writes; a blind unlink here would delete
1472
- # the NEW sidecar's discovery files. (ui.state is deliberately
1473
- # never cleaned: it carries the stable URL to the next spawn.)
1471
+ # Covers exits that never reach app shutdown. ui.state is kept on
1472
+ # purpose: it carries the stable URL to the next spawn.
1474
1473
  _cleanup_owned_serving_files()
1475
1474
 
1476
1475
  return 0
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import json
5
6
  from typing import Any
6
7
 
7
8
  # Call proxies dispatch the envelope's ``name`` back through middleware. Policy
@@ -37,3 +38,25 @@ def is_approval_management_call(name: str, args: dict[str, Any]) -> bool:
37
38
  name == _APPROVAL_MANAGEMENT_TOOL
38
39
  and args.get("action") in _APPROVAL_MANAGEMENT_ACTIONS
39
40
  )
41
+
42
+
43
+ def coerce_proxy_arguments(arguments: Any) -> dict[str, Any] | None:
44
+ """Normalise a call-proxy envelope's ``arguments`` to a dict or None.
45
+
46
+ The categorized proxies tolerate ``arguments`` arriving as a JSON string
47
+ (small models sometimes serialize it) and json.loads it after middleware
48
+ runs. A dict is used as-is; an absent value (``None``) becomes ``{}`` (a
49
+ legitimate no-argument call); a string is parsed and only a JSON *object*
50
+ yields a dict. Anything else returns None, meaning "malformed envelope".
51
+ """
52
+ if isinstance(arguments, dict):
53
+ return arguments
54
+ if arguments is None:
55
+ return {}
56
+ if isinstance(arguments, str):
57
+ try:
58
+ parsed = json.loads(arguments)
59
+ except (json.JSONDecodeError, ValueError, RecursionError):
60
+ return None
61
+ return parsed if isinstance(parsed, dict) else None
62
+ return None
@@ -647,17 +647,17 @@ class SearchTools(ComponentSearchMixin, OverviewMixin, StateMixin):
647
647
  ),
648
648
  }
649
649
 
650
- # Surface the stdio settings UI sidecar URL when a URL file is present.
650
+ # Surface the stdio settings UI sidecar URL while a sidecar serves it.
651
651
  # Added *after* ``project_fields`` so it survives every ``fields=`` projection
652
652
  # (issue #863).
653
- from ..stdio_settings_sidecar import read_sidecar_url
653
+ from ..stdio_settings_sidecar import live_sidecar_url
654
654
 
655
655
  projected = project_fields(
656
656
  result,
657
657
  parsed_fields,
658
658
  available_fields=_OVERVIEW_AVAILABLE_FIELDS,
659
659
  )
660
- sidecar_url = read_sidecar_url()
660
+ sidecar_url = live_sidecar_url()
661
661
  if sidecar_url:
662
662
  projected["settings_url"] = sidecar_url
663
663
  else:
@@ -5,7 +5,8 @@ The visibility filter (``visibility/``) normally only declutters ``ha_search`` /
5
5
  ``"enforce": true`` in ``entity_visibility.json``), the
6
6
  :class:`VisibilityInboundEnforcement` / :class:`VisibilityOutboundEnforcement`
7
7
  middleware pair makes the hidden set unreadable across tool reads, except for
8
- the deliberately unrestricted-by-default ``ha_report_issue`` diagnostic
8
+ the never-gated server tools (``ha_get_skill_guide``, ``ha_search_tools``,
9
+ ``ha_dev_*``) and the unrestricted-by-default ``ha_report_issue`` diagnostic
9
10
  escape hatch — "refuse on contact":
10
11
 
11
12
  - **Direct reads are concealed.** A call whose arguments name a hidden entity_id
@@ -67,7 +68,7 @@ from ha_mcp._vendor.fastmcp.server.middleware.middleware import (
67
68
 
68
69
  from ..errors import ErrorCode, create_entity_not_found_error, create_error_response
69
70
  from ..renamed_tools import current_tool_name
70
- from ..tool_dispatch import CALL_PROXY_META_TOOLS
71
+ from ..tool_dispatch import CALL_PROXY_META_TOOLS, coerce_proxy_arguments
71
72
  from ..tools.helpers import raise_tool_error
72
73
  from . import resolver
73
74
  from .identifier_aliases import (
@@ -107,6 +108,10 @@ _CUSTOM_TOOL = "ha_manage_custom_tool"
107
108
 
108
109
  # Diagnostic tool deliberately outside the visibility barrier unless opted in.
109
110
  _REPORT_ISSUE_TOOL = "ha_report_issue"
111
+ # Always outside the barrier: bundled docs and tool schemas whose examples can
112
+ # name a hidden id (#2949), and the ha_dev_* developer override by design.
113
+ _UNGATED_TOOLS = frozenset({"ha_get_skill_guide", "ha_search_tools"})
114
+ _UNGATED_PREFIX = "ha_dev_"
110
115
  # State reads have a shape-bounded scrub exception before the outbound scan.
111
116
  _STATE_TOOL = "ha_get_state"
112
117
 
@@ -511,21 +516,6 @@ def _unscannable_reason(name: str, args: dict[str, Any]) -> str | None:
511
516
  return None
512
517
 
513
518
 
514
- def _coerce_arguments(arguments: Any) -> dict[str, Any] | None:
515
- """Normalise a proxy envelope's ``arguments`` to a dict or None (mirrors read_only)."""
516
- if isinstance(arguments, dict):
517
- return arguments
518
- if arguments is None:
519
- return {}
520
- if isinstance(arguments, str):
521
- try:
522
- parsed = json.loads(arguments)
523
- except (json.JSONDecodeError, ValueError):
524
- return None
525
- return parsed if isinstance(parsed, dict) else None
526
- return None
527
-
528
-
529
519
  def _unwrap_proxy_call(args: dict[str, Any]) -> tuple[str, dict[str, Any]] | None:
530
520
  """Extract the innermost proxy target and arguments, or None if unusable.
531
521
 
@@ -540,7 +530,7 @@ def _unwrap_proxy_call(args: dict[str, Any]) -> tuple[str, dict[str, Any]] | Non
540
530
  if not isinstance(raw_name, str):
541
531
  return None
542
532
  name = current_tool_name(raw_name)
543
- arguments = _coerce_arguments(args.get("arguments"))
533
+ arguments = coerce_proxy_arguments(args.get("arguments"))
544
534
  while (
545
535
  name in CALL_PROXY_META_TOOLS
546
536
  and isinstance(arguments, dict)
@@ -548,7 +538,7 @@ def _unwrap_proxy_call(args: dict[str, Any]) -> tuple[str, dict[str, Any]] | Non
548
538
  ):
549
539
  raw_name = arguments["name"]
550
540
  name = current_tool_name(raw_name)
551
- arguments = _coerce_arguments(arguments.get("arguments"))
541
+ arguments = coerce_proxy_arguments(arguments.get("arguments"))
552
542
  if arguments is None:
553
543
  return None
554
544
  return name, arguments
@@ -599,13 +589,10 @@ class _VisibilityEnforcementBase(Middleware):
599
589
  resolver.load_visibility_config, resolver.get_data_dir()
600
590
  )
601
591
 
602
- async def _active_config(
603
- self,
604
- tool_name: str,
605
- *,
606
- emit_report_issue_diagnostic: bool = False,
592
+ async def _load_config_or_last_good(
593
+ self, tool_name: str
607
594
  ) -> VisibilityConfig | None:
608
- """Return the config when enforce is active, ``None`` when passthrough.
595
+ """Load the config, falling back to the last good load (``None`` if none).
609
596
 
610
597
  The active-mode gate must not crash the call with an opaque trace on an
611
598
  unloadable config (a hand-edit typo would break EVERY tool call), nor
@@ -613,7 +600,7 @@ class _VisibilityEnforcementBase(Middleware):
613
600
  enforce was on). Policy: fall back to the last config this process
614
601
  loaded successfully — for the common non-enforce install that preserves
615
602
  availability, and for an enforce install it preserves the boundary.
616
- With no good load ever, fail CLOSED like PolicyMiddleware does.
603
+ With no good load ever, the caller fails CLOSED like PolicyMiddleware.
617
604
 
618
605
  Each half diagnoses a distinct config-load failure. A context-local
619
606
  marker suppresses only the second traceback when both halves fail during
@@ -643,6 +630,18 @@ class _VisibilityEnforcementBase(Middleware):
643
630
  )
644
631
  if warning_emitted is not None:
645
632
  _config_load_warning_emitted.set(True)
633
+ return config
634
+
635
+ async def _active_config(
636
+ self,
637
+ tool_name: str,
638
+ *,
639
+ emit_report_issue_diagnostic: bool = False,
640
+ ) -> VisibilityConfig | None:
641
+ """Return the config when enforce is active, ``None`` when passthrough."""
642
+ if tool_name in _UNGATED_TOOLS or tool_name.startswith(_UNGATED_PREFIX):
643
+ return None
644
+ config = await self._load_config_or_last_good(tool_name)
646
645
  # ``ha_report_issue`` is an unconditional diagnostic escape hatch while
647
646
  # the toggle is off, not only a registry-failure fallback. A missing or
648
647
  # corrupt first config load follows that safe default; a last-known-good