ha-mcp-dev 9.1.2.dev3397__tar.gz → 9.1.2.dev3399__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 (849) hide show
  1. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/PKG-INFO +1 -1
  2. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/pyproject.toml +1 -1
  3. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/pyproject.toml.orig +1 -1
  4. ha_mcp_dev-9.1.2.dev3399/src/ha_mcp/tools/component_config_reads.py +228 -0
  5. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_write_helpers.py +12 -20
  6. ha_mcp_dev-9.1.2.dev3399/src/ha_mcp/tools/reference_validator.py +92 -0
  7. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_config_automations.py +7 -9
  8. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_config_scenes.py +5 -6
  9. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_config_scripts.py +5 -7
  10. ha_mcp_dev-9.1.2.dev3397/src/ha_mcp/tools/component_config_reads.py +0 -217
  11. ha_mcp_dev-9.1.2.dev3397/src/ha_mcp/tools/reference_validator.py +0 -396
  12. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/LICENSE +0 -0
  13. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/README.md +0 -0
  14. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/__init__.py +0 -0
  15. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/__main__.py +0 -0
  16. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_pypi_marker +0 -0
  17. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_rich_compat.py +0 -0
  18. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/__init__.py +0 -0
  19. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  20. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  21. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  22. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  23. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  24. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  25. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  26. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  27. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  28. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  29. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  30. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  31. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  32. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  33. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  34. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  35. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  36. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  37. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  38. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev_security.py +0 -0
  39. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  40. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  41. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  42. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  43. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  44. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  45. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  46. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  47. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  48. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  49. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  50. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  51. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  52. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  53. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  54. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  55. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  56. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  57. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  58. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  59. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  60. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  61. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  62. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  63. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  64. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  65. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  66. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  67. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  68. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  69. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  70. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  71. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  72. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  73. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  74. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  75. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  76. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  77. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  78. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  79. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  80. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/mixins/skills.py +0 -0
  81. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  82. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  83. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  84. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  85. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  86. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  87. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  88. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  89. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  90. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  91. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  92. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  93. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  94. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  95. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  96. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  97. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  98. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  99. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  100. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  101. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  102. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  103. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  104. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  105. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  106. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  107. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  108. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  109. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  110. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  111. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  112. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  113. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  114. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  115. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  116. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  117. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  118. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +0 -0
  119. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  120. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  121. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  122. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  123. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  124. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  125. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  126. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  127. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  128. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  129. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  130. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  131. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  132. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  133. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  134. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  135. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  136. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  137. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  138. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  139. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  140. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  141. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  142. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  143. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  144. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  145. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  146. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  147. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  148. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  149. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  150. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  151. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  152. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  153. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  154. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  155. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  156. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  157. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  158. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  159. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  160. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  161. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  162. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  163. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  164. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  165. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  166. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  167. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  168. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  169. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  170. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  171. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  172. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  173. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  174. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  175. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  176. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  177. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  178. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  179. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  180. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  181. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  182. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  183. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  184. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  185. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  186. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  187. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  188. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  189. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  190. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  191. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/mixins/extensions.py +0 -0
  192. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  193. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  194. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  195. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  196. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  197. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  198. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  199. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  200. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  201. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  202. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  203. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  204. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  205. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  206. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  207. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  208. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  209. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  210. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  211. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  212. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  213. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  214. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  215. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  216. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  217. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  218. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  219. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  220. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  221. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  222. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  223. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  224. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  225. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  226. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  227. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  228. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  229. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  230. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  231. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  232. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  233. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  234. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  235. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  236. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  237. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  238. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  239. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  240. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/skills/__init__.py +0 -0
  241. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/skills/_constants.py +0 -0
  242. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/skills/_resources.py +0 -0
  243. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/skills/_snapshot.py +0 -0
  244. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/skills/_source.py +0 -0
  245. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/skills/client.py +0 -0
  246. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/skills/extension.py +0 -0
  247. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/skills/models.py +0 -0
  248. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  249. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  250. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  251. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  252. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  253. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  254. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  255. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  256. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  257. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  258. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  259. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  260. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  261. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  262. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  263. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  264. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  265. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  266. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  267. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  268. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  269. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  270. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  271. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  272. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  273. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  274. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  275. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  276. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  277. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  278. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  279. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  280. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  281. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  282. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  283. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  284. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  285. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  286. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  287. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  288. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  289. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  290. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  291. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  292. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  293. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  294. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  295. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  296. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  297. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  298. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  299. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  300. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  301. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  302. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  303. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  304. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  305. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  306. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  307. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  308. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  309. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  310. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  311. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  312. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  313. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  314. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  315. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  316. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  317. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  318. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  319. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  320. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  321. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  322. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  323. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  324. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  325. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  326. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  327. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  328. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  329. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  330. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  331. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  332. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  333. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  334. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  335. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  336. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  337. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  338. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  339. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  340. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  341. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  342. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  343. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  344. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  345. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  346. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  347. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  348. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  349. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  350. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  351. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  352. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  353. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  354. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  355. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  356. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  357. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  358. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  359. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  360. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  361. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  362. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  363. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  364. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  365. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  366. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  367. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  368. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  369. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  370. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  371. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  372. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  373. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  374. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  375. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  376. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  377. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  378. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  379. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  380. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  381. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  382. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  383. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  384. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  385. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  386. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  387. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  388. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  389. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  390. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  391. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  392. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  393. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  394. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  395. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  396. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  397. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  398. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  399. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  400. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  401. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  402. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  403. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  404. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  405. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/_request_clock.py +0 -0
  406. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  407. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  408. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  409. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  410. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  411. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  412. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  413. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  414. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  415. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  416. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  417. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  418. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  419. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  420. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  421. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  422. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  423. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  424. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  425. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  426. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  427. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  428. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  429. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  430. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  431. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  432. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  433. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  434. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  435. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  436. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  437. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  438. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  439. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  440. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  441. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  442. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/requirements.txt +0 -0
  443. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  444. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  445. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  446. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  447. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  448. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  449. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  450. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  451. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  452. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  453. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  454. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  455. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  456. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  457. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  458. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  459. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  460. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  461. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  462. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  463. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  464. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  465. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  466. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  467. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  468. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  469. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  470. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  471. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  472. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  473. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  474. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  475. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  476. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  477. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  478. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  479. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  480. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  481. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  482. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  483. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  484. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  485. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  486. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  487. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  488. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  489. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  490. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  491. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  492. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  493. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  494. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  495. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  496. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  497. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  498. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  499. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/_version.py +0 -0
  500. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/app_discovery.py +0 -0
  501. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/auth/__init__.py +0 -0
  502. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/auth/consent_form.py +0 -0
  503. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/auth/iss_stamp.py +0 -0
  504. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/auth/oidc_compat.py +0 -0
  505. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/auth/provider.py +0 -0
  506. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/backup_calendar.py +0 -0
  507. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/backup_dashboards.py +0 -0
  508. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/backup_diff.py +0 -0
  509. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/backup_entities.py +0 -0
  510. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/backup_entity_ids.py +0 -0
  511. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/backup_helper_target.py +0 -0
  512. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/backup_integrations.py +0 -0
  513. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/backup_manager.py +0 -0
  514. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/backup_tags.py +0 -0
  515. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/backup_todo.py +0 -0
  516. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/backup_zones.py +0 -0
  517. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/browser_landing.py +0 -0
  518. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/client/__init__.py +0 -0
  519. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/client/admin_routes.py +0 -0
  520. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/client/config_entry_read.py +0 -0
  521. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/client/error_log_journald.py +0 -0
  522. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/client/event_listeners.py +0 -0
  523. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/client/models.py +0 -0
  524. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/client/rest_client.py +0 -0
  525. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/client/supervisor_client.py +0 -0
  526. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/client/websocket_client.py +0 -0
  527. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/client/websocket_listener.py +0 -0
  528. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/client/websocket_state.py +0 -0
  529. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/config.py +0 -0
  530. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/config_backup.py +0 -0
  531. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/config_meta.py +0 -0
  532. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/config_overrides.py +0 -0
  533. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/config_registry.py +0 -0
  534. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/config_settings.py +0 -0
  535. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  536. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  537. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  538. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/dashboard_screenshot/engine_compat.py +0 -0
  539. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  540. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  541. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/dashboard_screenshot/theme_check.py +0 -0
  542. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  543. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/errors.py +0 -0
  544. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/ha_request_queue.py +0 -0
  545. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  546. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/http_transport.py +0 -0
  547. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/image_info.py +0 -0
  548. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/ipv6_lan_guard.py +0 -0
  549. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/listen_sockets.py +0 -0
  550. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/llm_exposure.py +0 -0
  551. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/log_filters.py +0 -0
  552. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/mcp_client_context.py +0 -0
  553. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/policy/__init__.py +0 -0
  554. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/policy/approval_queue.py +0 -0
  555. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/policy/decision_pin.py +0 -0
  556. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/policy/decisions.py +0 -0
  557. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/policy/editing.py +0 -0
  558. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/policy/evaluator.py +0 -0
  559. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/policy/events.py +0 -0
  560. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/policy/handlers.py +0 -0
  561. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/policy/middleware.py +0 -0
  562. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/policy/model.py +0 -0
  563. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/policy/mrtr.py +0 -0
  564. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/policy/persistence.py +0 -0
  565. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/policy/server_channels.py +0 -0
  566. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/policy/value_sources.py +0 -0
  567. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/py.typed +0 -0
  568. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/read_only.py +0 -0
  569. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/redaction.py +0 -0
  570. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/renamed_tools.py +0 -0
  571. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  572. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  573. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  574. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
  575. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  576. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  577. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  578. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  579. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  580. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  581. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  582. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  583. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  584. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  585. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  586. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
  587. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  588. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/server.py +0 -0
  589. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/server_instructions.py +0 -0
  590. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/server_lifespan.py +0 -0
  591. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/server_tool_text.py +0 -0
  592. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/__init__.py +0 -0
  593. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  594. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  595. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  596. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/_handlers_oauth_callbacks.py +0 -0
  597. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  598. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  599. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  600. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  601. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  602. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  603. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  604. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/_theme.py +0 -0
  605. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  606. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  607. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  608. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  609. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  610. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  611. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  612. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  613. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  614. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/hu.json +0 -0
  615. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  616. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  617. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  618. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  619. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  620. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  621. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  622. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  623. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  624. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/settings.css +0 -0
  625. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/settings.html +0 -0
  626. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
  627. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
  628. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
  629. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
  630. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
  631. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
  632. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
  633. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
  634. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
  635. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/settings_ui/settings_js/10_oauth_callbacks.js +0 -0
  636. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/smoke_test.py +0 -0
  637. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  638. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/storage_helper_types.py +0 -0
  639. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/strict_bps.py +0 -0
  640. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tool_catalog.py +0 -0
  641. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tool_dispatch.py +0 -0
  642. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/__init__.py +0 -0
  643. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/addon_connection_hints.py +0 -0
  644. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/area_messages.py +0 -0
  645. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/auto_backup.py +0 -0
  646. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/automation_errors.py +0 -0
  647. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/automation_registry_details.py +0 -0
  648. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/backup.py +0 -0
  649. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/backup_access.py +0 -0
  650. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/backup_on_demand.py +0 -0
  651. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/backup_snapshot.py +0 -0
  652. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/backup_snapshot_restore.py +0 -0
  653. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  654. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/best_practice_result.py +0 -0
  655. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  656. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  657. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  658. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/blueprint_write.py +0 -0
  659. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/bug_report_config.py +0 -0
  660. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/bug_report_redaction.py +0 -0
  661. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/bug_report_sources.py +0 -0
  662. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/bug_report_templates.py +0 -0
  663. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/bulk_selector.py +0 -0
  664. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/coercion.py +0 -0
  665. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/component_api.py +0 -0
  666. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/component_automation.py +0 -0
  667. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/component_config_entries.py +0 -0
  668. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  669. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/component_devices.py +0 -0
  670. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/component_helper_collections.py +0 -0
  671. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/component_registries.py +0 -0
  672. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  673. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/component_todo.py +0 -0
  674. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_entry_backup.py +0 -0
  675. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  676. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_entry_flow_errors.py +0 -0
  677. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  678. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
  679. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  680. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_entry_flow_progress.py +0 -0
  681. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  682. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  683. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  684. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_file_visibility.py +0 -0
  685. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
  686. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
  687. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_helpers/create.py +0 -0
  688. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
  689. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
  690. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_helpers/icon_route.py +0 -0
  691. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
  692. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
  693. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
  694. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
  695. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_helpers/update.py +0 -0
  696. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
  697. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
  698. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/config_write_errors.py +0 -0
  699. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/core_contract.py +0 -0
  700. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/dashboard_card_describe.py +0 -0
  701. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  702. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
  703. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/dashboard_read_errors.py +0 -0
  704. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/dev_backup.py +0 -0
  705. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/device_control.py +0 -0
  706. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/device_enrichment.py +0 -0
  707. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
  708. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/energy_preferences.py +0 -0
  709. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/entity_expose_batch.py +0 -0
  710. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
  711. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/entity_registration.py +0 -0
  712. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/entity_removal.py +0 -0
  713. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/entity_update_fields.py +0 -0
  714. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  715. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/event_call.py +0 -0
  716. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/event_listener_fields.py +0 -0
  717. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/flow_helper_lookup.py +0 -0
  718. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/flow_translations.py +0 -0
  719. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/hacs_backend.py +0 -0
  720. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/hacs_registration.py +0 -0
  721. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/helper_flows.py +0 -0
  722. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/helpers.py +0 -0
  723. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/history_response.py +0 -0
  724. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/ignored_entries.py +0 -0
  725. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/integration_entry_state.py +0 -0
  726. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/integration_flow_steps.py +0 -0
  727. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/integration_schema.py +0 -0
  728. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/integration_ws_commands.py +0 -0
  729. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/log_common.py +0 -0
  730. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/log_sources.py +0 -0
  731. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  732. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/log_sources_logbook.py +0 -0
  733. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  734. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/radio/__init__.py +0 -0
  735. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/radio/base.py +0 -0
  736. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/radio/matter.py +0 -0
  737. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/radio/thread.py +0 -0
  738. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  739. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/radio/zwave.py +0 -0
  740. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
  741. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/recorder_errors.py +0 -0
  742. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/registry.py +0 -0
  743. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  744. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/resource_codec.py +0 -0
  745. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/resource_patch.py +0 -0
  746. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/response_helpers.py +0 -0
  747. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/scene_discovery.py +0 -0
  748. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/search/__init__.py +0 -0
  749. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/search/base.py +0 -0
  750. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/search/component.py +0 -0
  751. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/search/entities.py +0 -0
  752. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/search/legacy.py +0 -0
  753. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/search/modes.py +0 -0
  754. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/search/overview.py +0 -0
  755. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/search/response.py +0 -0
  756. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/search/state.py +0 -0
  757. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/server_version.py +0 -0
  758. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  759. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  760. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  761. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  762. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  763. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  764. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/smart_search/_flow_helpers.py +0 -0
  765. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  766. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  767. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  768. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  769. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/statistics_calendar.py +0 -0
  770. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/statistics_helpers.py +0 -0
  771. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/statistics_resets.py +0 -0
  772. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/system_restart.py +0 -0
  773. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tool_hints.py +0 -0
  774. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  775. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_addons.py +0 -0
  776. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_areas.py +0 -0
  777. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  778. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  779. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  780. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_calendar.py +0 -0
  781. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_camera.py +0 -0
  782. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_categories.py +0 -0
  783. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_code.py +0 -0
  784. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  785. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  786. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  787. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_dev.py +0 -0
  788. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_energy.py +0 -0
  789. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_entities.py +0 -0
  790. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  791. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_groups.py +0 -0
  792. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_hacs.py +0 -0
  793. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_history.py +0 -0
  794. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_integrations.py +0 -0
  795. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_labels.py +0 -0
  796. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_logs.py +0 -0
  797. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_radio.py +0 -0
  798. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_registry.py +0 -0
  799. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_resources.py +0 -0
  800. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_search.py +0 -0
  801. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  802. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_service.py +0 -0
  803. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_services.py +0 -0
  804. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_system.py +0 -0
  805. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_themes.py +0 -0
  806. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_todo.py +0 -0
  807. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_traces.py +0 -0
  808. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_updates.py +0 -0
  809. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_utility.py +0 -0
  810. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  811. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  812. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  813. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/tools_zones.py +0 -0
  814. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/update_categories.py +0 -0
  815. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/util_helpers.py +0 -0
  816. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/validation_middleware.py +0 -0
  817. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/tools/ws_waiters.py +0 -0
  818. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/transforms/__init__.py +0 -0
  819. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/transforms/categorized_search.py +0 -0
  820. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/transforms/compact_params.py +0 -0
  821. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/transforms/component_helpers.py +0 -0
  822. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/transforms/component_search.py +0 -0
  823. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  824. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  825. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/transport_security.py +0 -0
  826. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/update_check.py +0 -0
  827. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/__init__.py +0 -0
  828. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/config_hash.py +0 -0
  829. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/config_write_lock.py +0 -0
  830. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  831. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/data_paths.py +0 -0
  832. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  833. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/domain_handlers.py +0 -0
  834. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/entity_membership.py +0 -0
  835. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  836. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  837. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  838. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/operation_manager.py +0 -0
  839. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/python_sandbox.py +0 -0
  840. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  841. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/skill_loader.py +0 -0
  842. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/utils/usage_logger.py +0 -0
  843. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/visibility/__init__.py +0 -0
  844. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/visibility/config_files.py +0 -0
  845. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/visibility/enforcement.py +0 -0
  846. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/visibility/identifier_aliases.py +0 -0
  847. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/visibility/model.py +0 -0
  848. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/src/ha_mcp/visibility/persistence.py +0 -0
  849. {ha_mcp_dev-9.1.2.dev3397 → ha_mcp_dev-9.1.2.dev3399}/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.2.dev3397
3
+ Version: 9.1.2.dev3399
4
4
  Summary: Configure and automate Home Assistant with Claude, ChatGPT, and other AI assistants.
5
5
  Keywords: mcp,home-assistant,ai,automation,smart-home
6
6
  Author: Julien
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.1.2.dev3397"
7
+ version = "9.1.2.dev3399"
8
8
  description = "Configure and automate Home Assistant with Claude, ChatGPT, and other AI assistants."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13,<3.15"
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.1.2.dev3397"
7
+ version = "9.1.2.dev3399"
8
8
  description = "Configure and automate Home Assistant with Claude, ChatGPT, and other AI assistants."
9
9
  readme = "README.md"
10
10
  # Upper bound widened to <3.15 so the package installs on Home Assistant's
@@ -0,0 +1,228 @@
1
+ """Config-resolution + reference reads over the ``ha_mcp_tools`` component gate.
2
+
3
+ Two consumers in the automation/script/scene family read through the
4
+ component:
5
+
6
+ - Entity resolution maps storage keys to live registry entity IDs.
7
+ ``entity_registration.resolve_entity_id_after_write`` polls after scene/script
8
+ writes against one deadline. ``_resolve_scene_entity_id`` uses a single retry
9
+ before scene removal. The component's ``entity_lookup`` returns only matching
10
+ rows instead of a full registry/state listing. A hit is authoritative at once,
11
+ but an empty read can precede HA's asynchronous entity registration even when
12
+ performed in-process, so post-write callers must continue polling.
13
+ - The reference validator (``validate_config_references``) asks the
14
+ component's ``ha_mcp_tools/config_references`` for Core's own verdict on a
15
+ proposed config's references; Core serves nothing like it for an unsaved
16
+ config, so there is no legacy path and an absent component is reported.
17
+
18
+ This module owns the caps-gated fetches so the routing discipline — probe caps,
19
+ send one frame, invalidate on ``unknown_command`` — lives in one place instead
20
+ of being duplicated per consumer (the pattern ``component_devices`` established
21
+ for the ``device_get`` / ``device_list`` capabilities).
22
+ ``fetch_entity_lookup_via_component`` returns ``None`` to mean "component
23
+ unavailable — use the legacy path"; a component that answers authoritatively
24
+ returns its payload (an EMPTY ``matches`` list is authoritative — "no registry
25
+ entry with that unique_id" — kept distinct from the ``None`` miss). It maps a
26
+ transport failure (``HomeAssistantConnectionError`` off ``send_command`` or from
27
+ a failed (re)build of the pooled socket, or ``HomeAssistantAuthError``) to
28
+ ``None`` too, NEVER propagating it: its consumers fall back to the legacy
29
+ WebSocket registry bridge or REST state reads, which an escaping error would
30
+ skip. The post-write resolver catches known API/transport failures and retains
31
+ a best-effort entity ID; later wait and category operations report any
32
+ verification or assignment failure. Removal resolvers retain their own error
33
+ policies.
34
+
35
+ **GET-path invariant:** the automation/script/scene *config-get* tools never
36
+ read the config body through the component — its in-process ``raw_config``
37
+ freshness lags the config file between a write and the next completed reload,
38
+ so the body always comes from Core's REST config endpoint. The script and scene
39
+ resolvers gate the whole component branch (caps probe included) behind
40
+ ``allow_component`` for removals, and the dedicated post-write resolver is never
41
+ called from a config-get. The automation tools resolve through
42
+ ``component_automation.automation_lookup`` instead, which reads the registry,
43
+ never the body.
44
+ """
45
+
46
+ from __future__ import annotations
47
+
48
+ import logging
49
+ from typing import Any
50
+
51
+ from ..client.rest_client import (
52
+ HomeAssistantCommandError,
53
+ HomeAssistantCommandTimeout,
54
+ )
55
+ from ..client.websocket_client import get_websocket_client
56
+ from .component_api import (
57
+ component_supports,
58
+ get_component_caps,
59
+ invalidate_caps,
60
+ is_unknown_command,
61
+ )
62
+
63
+ logger = logging.getLogger(__name__)
64
+
65
+ WS_ENTITY_LOOKUP = "ha_mcp_tools/entity_lookup"
66
+ WS_CONFIG_REFERENCES = "ha_mcp_tools/config_references"
67
+ CONFIG_REFERENCES = "config_references"
68
+
69
+
70
+ async def fetch_entity_lookup_via_component(
71
+ client: Any,
72
+ unique_id: str,
73
+ *,
74
+ domain: str | None = None,
75
+ ) -> list[dict[str, Any]] | None:
76
+ """One ``ha_mcp_tools/entity_lookup`` read; ``None`` ⇒ use the legacy path.
77
+
78
+ Returns the component's ``matches`` list — every entity-registry entry whose
79
+ ``unique_id`` equals ``unique_id`` (each ``{entity_id, unique_id, platform,
80
+ domain, config_entry_id, categories, disabled_by, hidden_by}``), optionally
81
+ narrowed by the entity's own ``domain``. Multiple matches (one ``unique_id``
82
+ across platforms) are all returned — the caller picks. An AUTHORITATIVE empty
83
+ list (no registry entry with that unique_id) is kept distinct from the
84
+ ``None`` miss (component unavailable → legacy).
85
+
86
+ ``None`` on capability miss, downgrade (``unknown_command`` → invalidate the
87
+ cached caps), command error/timeout (logged), a connection-establishment
88
+ failure (logged — see the module docstring: the resolvers' legacy paths ride
89
+ the WS bridge / REST, NOT this pooled socket, so a transport
90
+ failure must fall back rather than abort a landed write), or a shape-drift
91
+ payload (no ``matches`` list). Same error-taxonomy and silent fallback as
92
+ ``component_devices.fetch_device_via_component``.
93
+ """
94
+ caps = await get_component_caps(client)
95
+ if not component_supports(caps, "entity_lookup"):
96
+ return None
97
+ kwargs: dict[str, Any] = {"unique_id": unique_id}
98
+ if domain is not None:
99
+ kwargs["domain"] = domain
100
+ try:
101
+ ws = await get_websocket_client(
102
+ url=client.base_url,
103
+ token=client.token,
104
+ verify_ssl=getattr(client, "verify_ssl", None),
105
+ )
106
+ raw = await ws.send_command(WS_ENTITY_LOOKUP, **kwargs)
107
+ except (HomeAssistantCommandError, HomeAssistantCommandTimeout) as exc:
108
+ if is_unknown_command(exc):
109
+ invalidate_caps(client)
110
+ else:
111
+ logger.warning("%s failed; fell back to legacy: %r", WS_ENTITY_LOOKUP, exc)
112
+ return None
113
+ except Exception as exc: # noqa: BLE001
114
+ # HomeAssistantConnectionError (a pooled-WS drop or a failed
115
+ # (re)connect) or any other error.
116
+ # The resolvers' legacy paths do NOT die identically (see module docstring),
117
+ # so route to legacy rather than escape.
118
+ logger.warning(
119
+ "%s connection error; falling back to legacy: %r", WS_ENTITY_LOOKUP, exc
120
+ )
121
+ return None
122
+ result = raw.get("result")
123
+ matches = result.get("matches") if isinstance(result, dict) else None
124
+ if not isinstance(matches, list):
125
+ logger.debug(
126
+ "%s returned a malformed result (no 'matches' list); falling back to legacy",
127
+ WS_ENTITY_LOOKUP,
128
+ )
129
+ return None
130
+ return matches
131
+
132
+
133
+ _INSTALL_HINT = (
134
+ "install the ha_mcp_tools component via HACS (the Marketplace on Home "
135
+ "Assistant 2026.11+) and restart Home Assistant"
136
+ )
137
+
138
+
139
+ def _unavailable(error: str) -> dict[str, Any]:
140
+ return {"status": "unavailable", "error": error}
141
+
142
+
143
+ def _answer_shape_error(result: Any) -> str | None:
144
+ """Why *result* is not a ``config_references`` answer, or None if it is."""
145
+ if not isinstance(result, dict) or not isinstance(result.get("status"), str):
146
+ return "no status"
147
+ if result["status"] != "ok":
148
+ return None if result.get("error") else "no error for a failed check"
149
+ fields = {
150
+ "missing": ("kind", "value"),
151
+ "mismatches": ("path", "kind", "name", "entity_id"),
152
+ }
153
+ for key, strings in fields.items():
154
+ items = result.get(key)
155
+ if not isinstance(items, list) or not all(
156
+ isinstance(item, dict)
157
+ and all(isinstance(item.get(k), str) for k in strings)
158
+ and (
159
+ key != "mismatches"
160
+ or (
161
+ isinstance(item.get("offered"), list)
162
+ and all(isinstance(o, str) for o in item["offered"])
163
+ )
164
+ )
165
+ for item in items
166
+ ):
167
+ return f"malformed {key}"
168
+ return None
169
+
170
+
171
+ async def fetch_config_references_via_component(
172
+ client: Any, kind: str, config: dict[str, Any]
173
+ ) -> dict[str, Any]:
174
+ """Core's verdict on *config*'s references, through ``ha_mcp_tools/config_references``.
175
+
176
+ The component validates *config* (an automation, script or scene, per
177
+ *kind*) with Core, collects its references with Core's helpers, checks them
178
+ against Core's registries and puts each entity target to Core's target
179
+ lookups. It answers ``{"status": "ok", "missing": [...], "mismatches":
180
+ [...]}``, ``{"status": "invalid", "error": ...}`` when Core's validator
181
+ refuses the config, or ``{"status": "unavailable", "error": ...}``. An
182
+ absent or outdated component, a command or transport failure and an answer
183
+ of the wrong shape are answered the same unavailable way, naming the cause:
184
+ the write goes on and the caller reports the references as unchecked. There
185
+ is no REST/WebSocket fallback by design: Core serves the target lookups,
186
+ ``validate_config`` for a config's trigger, condition and action lists, and
187
+ the registries over its API, but does not collect an unsaved config's
188
+ references, which is where the check starts; a server-side copy of that
189
+ part is the walker this replaced.
190
+ """
191
+ caps = await get_component_caps(client)
192
+ if caps is None:
193
+ return _unavailable(
194
+ "references were not checked: Home Assistant checks them through the "
195
+ "ha_mcp_tools component, which is not installed or did not answer; "
196
+ + _INSTALL_HINT
197
+ )
198
+ outdated = _unavailable(
199
+ "references were not checked: the installed ha_mcp_tools component "
200
+ "predates the reference check; update it via HACS (the Marketplace on "
201
+ "Home Assistant 2026.11+)"
202
+ )
203
+ if not component_supports(caps, CONFIG_REFERENCES):
204
+ return outdated
205
+ try:
206
+ ws = await get_websocket_client(
207
+ url=client.base_url,
208
+ token=client.token,
209
+ verify_ssl=getattr(client, "verify_ssl", None),
210
+ )
211
+ raw = await ws.send_command(WS_CONFIG_REFERENCES, kind=kind, config=config)
212
+ except (HomeAssistantCommandError, HomeAssistantCommandTimeout) as exc:
213
+ if is_unknown_command(exc):
214
+ invalidate_caps(client)
215
+ return outdated
216
+ logger.warning("%s failed: %r", WS_CONFIG_REFERENCES, exc)
217
+ return _unavailable(str(exc) or type(exc).__name__)
218
+ except Exception as exc:
219
+ # A soft check must never abort the write it accompanies.
220
+ logger.warning("%s connection error", WS_CONFIG_REFERENCES, exc_info=True)
221
+ return _unavailable(str(exc) or type(exc).__name__)
222
+ result = raw.get("result")
223
+ if (shape := _answer_shape_error(result)) is not None or not isinstance(
224
+ result, dict
225
+ ):
226
+ logger.warning("%s answered with %s: %r", WS_CONFIG_REFERENCES, shape, result)
227
+ return _unavailable(f"{WS_CONFIG_REFERENCES} answered with {shape}")
228
+ return result
@@ -8,7 +8,7 @@ metadata, and the config reload waiter.
8
8
  import asyncio
9
9
  import json
10
10
  import logging
11
- from collections.abc import AsyncIterator, Awaitable, Callable
11
+ from collections.abc import AsyncIterator, Awaitable, Callable, Mapping
12
12
  from contextlib import asynccontextmanager
13
13
  from typing import Any
14
14
 
@@ -177,30 +177,22 @@ async def apply_entity_category(
177
177
 
178
178
 
179
179
  def merge_validation_meta(
180
- result: dict[str, Any], validation_meta: dict[str, Any]
180
+ result: dict[str, Any], validation_meta: Mapping[str, Any]
181
181
  ) -> None:
182
182
  """Attach reference-validator output to a set-tool success ``result``.
183
183
 
184
- Produces a single nested ``validation`` field when there's anything
185
- worth reporting - warnings, skipped templates, a blueprint
186
- short-circuit, target kinds left unchecked, or a failed registry fetch.
187
- Keeps the happy-path response unchanged.
184
+ Produces a single nested ``validation`` field when there's anything worth
185
+ reporting: Core's warnings, or why the references went unchecked. Keeps the
186
+ happy-path response unchanged.
188
187
 
189
- Shared between ``ha_config_set_automation`` and
190
- ``ha_config_set_script``; see
191
- :mod:`ha_mcp.tools.reference_validator` for the validator itself
192
- and #940 for background.
188
+ Shared between ``ha_config_set_automation``, ``ha_config_set_script`` and
189
+ ``ha_config_set_scene``; see :mod:`ha_mcp.tools.reference_validator`.
193
190
  """
194
- entry: dict[str, Any] = {}
195
- if validation_meta.get("warnings"):
196
- entry["warnings"] = validation_meta["warnings"]
197
- if validation_meta.get("unvalidated_templates"):
198
- entry["unvalidated_templates"] = validation_meta["unvalidated_templates"]
199
- if validation_meta.get("blueprint_skipped"):
200
- entry["blueprint_skipped"] = True
201
- for key in ("unchecked_target_kinds", "references_unchecked"):
202
- if validation_meta.get(key):
203
- entry[key] = validation_meta[key]
191
+ entry = {
192
+ key: validation_meta[key]
193
+ for key in ("warnings", "references_unchecked")
194
+ if validation_meta.get(key)
195
+ }
204
196
  if entry:
205
197
  result["validation"] = entry
206
198
 
@@ -0,0 +1,92 @@
1
+ """References in an automation, script or scene config, checked by Core.
2
+
3
+ The component's ``ha_mcp_tools/config_references`` bridge runs Core's own
4
+ validator on the proposed config, collects its references with Core's helpers
5
+ and checks them against Core's registries, and puts each entity target to
6
+ Core's target lookups (the editor's target pickers). This module only turns
7
+ that answer into soft warnings beside ``best_practice_warnings``. There is no
8
+ server-side copy of Core's rules to fall back on: without the component the
9
+ response says the references went unchecked.
10
+
11
+ Background: #940 (a hallucinated ``notify.mobile_app_andrew_phone`` that
12
+ ``ha_config_set_automation`` accepted silently) and #2989 (``select.select_option``
13
+ aimed at an ``input_select``, which Core saves and the action then skips).
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ from typing import Any, Literal, NotRequired, TypedDict
19
+
20
+ from .component_config_reads import fetch_config_references_via_component
21
+
22
+ ConfigKind = Literal["automation", "script", "scene"]
23
+ RefKind = Literal["service", "entity", "device", "area", "floor", "label"]
24
+
25
+
26
+ class ValidationWarning(TypedDict):
27
+ """One warning in the tool response.
28
+
29
+ A missing reference has no ``path``: Core's helpers collect references as
30
+ sets. A target Core does not offer carries its ``path``, the item it is a
31
+ target of (``target_of``) and what Core does offer for it (``offered``).
32
+ """
33
+
34
+ kind: RefKind
35
+ value: str
36
+ reason: str
37
+ path: NotRequired[str]
38
+ target_of: NotRequired[str]
39
+ offered: NotRequired[list[str]]
40
+
41
+
42
+ class ValidationMeta(TypedDict):
43
+ """Core's warnings, or why the references went unchecked."""
44
+
45
+ warnings: list[ValidationWarning]
46
+ references_unchecked: NotRequired[str]
47
+
48
+
49
+ def _warnings(answer: dict[str, Any]) -> list[ValidationWarning]:
50
+ warnings: list[ValidationWarning] = [
51
+ {
52
+ "kind": missing["kind"],
53
+ "value": missing["value"],
54
+ "reason": f"Home Assistant has no {missing['kind']} {missing['value']}",
55
+ }
56
+ for missing in answer["missing"]
57
+ ]
58
+ warnings.extend(
59
+ {
60
+ "kind": "entity",
61
+ "value": mismatch["entity_id"],
62
+ "path": mismatch["path"],
63
+ "target_of": mismatch["name"],
64
+ "offered": mismatch["offered"],
65
+ "reason": (
66
+ f"Home Assistant does not offer {mismatch['entity_id']} as a "
67
+ f"target of {mismatch['name']}; see offered for what it does offer"
68
+ ),
69
+ }
70
+ for mismatch in answer["mismatches"]
71
+ )
72
+ return warnings
73
+
74
+
75
+ async def validate_config_references(
76
+ client: Any, config: dict[str, Any], kind: ConfigKind
77
+ ) -> ValidationMeta:
78
+ """Core's verdict on *config*'s references, as validation metadata.
79
+
80
+ ``references_unchecked`` names why nothing was checked: the component is
81
+ absent or outdated, the command or transport failed, Core's validator
82
+ refused the config (Core then refuses the write itself), or the component's
83
+ check failed.
84
+ """
85
+ answer = await fetch_config_references_via_component(client, kind, config)
86
+ if answer["status"] != "ok":
87
+ return {
88
+ "warnings": [],
89
+ "references_unchecked": answer.get("error")
90
+ or f"references were not checked: the check answered {answer['status']}",
91
+ }
92
+ return {"warnings": _warnings(answer)}
@@ -80,7 +80,7 @@ from .helpers import (
80
80
  reject_malformed_list_fields,
81
81
  validate_identifier_not_empty,
82
82
  )
83
- from .reference_validator import validate_config_references
83
+ from .reference_validator import validate_config_references as ref_check
84
84
  from .tool_hints import read_only_hints, write_hints
85
85
  from .util_helpers import list_visible_registry_ids
86
86
  from .ws_waiters import (
@@ -704,14 +704,12 @@ class AutomationConfigTools:
704
704
  operation = "created" if stored is None else "updated"
705
705
 
706
706
  bp_warnings = _check_best_practices(config_dict)
707
- validation_meta = await validate_config_references(
708
- self._client, config_dict
709
- )
707
+ references = await ref_check(self._client, config_dict, "automation")
710
708
  await self._check_before_write(
711
709
  config_dict, entity_id, effective_category, bp_warnings
712
710
  )
713
711
 
714
- return await self._run_config_update(
712
+ response = await self._run_config_update(
715
713
  config_dict,
716
714
  entity_id,
717
715
  target,
@@ -719,12 +717,13 @@ class AutomationConfigTools:
719
717
  effective_category,
720
718
  wait,
721
719
  bp_warnings,
722
- validation_meta,
723
720
  MandatoryBPS,
724
721
  detached_blueprint,
725
722
  enabled,
726
723
  run_actions=run_actions,
727
724
  )
725
+ merge_validation_meta(response, references)
726
+ return response
728
727
 
729
728
  except ToolError as te:
730
729
  raise augment_tool_error_with_skill_content(te, bp_warnings) from None
@@ -1159,6 +1158,7 @@ class AutomationConfigTools:
1159
1158
  transformed_config, entity_id, source="python_transform"
1160
1159
  )
1161
1160
  bp_warnings = _check_best_practices(transformed_config)
1161
+ references = await ref_check(self._client, transformed_config, "automation")
1162
1162
  await self._check_before_write(
1163
1163
  transformed_config, entity_id, effective_category, bp_warnings
1164
1164
  )
@@ -1212,6 +1212,7 @@ class AutomationConfigTools:
1212
1212
  canonical_files=_AUTOMATION_SKILL_FILES,
1213
1213
  referenced_files=bp_warnings.referenced_files,
1214
1214
  )
1215
+ merge_validation_meta(response, references)
1215
1216
  return response, bp_warnings
1216
1217
 
1217
1218
  async def _read_back_hash(
@@ -1236,7 +1237,6 @@ class AutomationConfigTools:
1236
1237
  effective_category: str | None,
1237
1238
  wait: bool,
1238
1239
  bp_warnings: BestPracticeCheckResult,
1239
- validation_meta: dict[str, Any],
1240
1240
  MandatoryBPS: bool,
1241
1241
  detached_blueprint: str | None = None,
1242
1242
  enabled: bool | None = None,
@@ -1320,8 +1320,6 @@ class AutomationConfigTools:
1320
1320
  if bp_warnings:
1321
1321
  result["best_practice_warnings"] = list(bp_warnings)
1322
1322
 
1323
- merge_validation_meta(result, validation_meta)
1324
-
1325
1323
  automation_id = resolved_entity_id or entity_id or result.get("unique_id")
1326
1324
  response = {
1327
1325
  "success": True,
@@ -56,7 +56,7 @@ from .helpers import (
56
56
  register_tool_methods,
57
57
  validate_identifier_not_empty,
58
58
  )
59
- from .reference_validator import validate_config_references
59
+ from .reference_validator import validate_config_references as ref_check
60
60
  from .scene_discovery import discover_scenes
61
61
  from .tool_hints import read_only_hints, write_hints
62
62
  from .ws_waiters import verify_entity_removed, wait_for_entity_registered
@@ -970,6 +970,7 @@ class ConfigSceneTools:
970
970
  # ``resolved_id`` is the storage key (write target); ``scene_id``
971
971
  # stays the caller id so a missing ``name`` defaults caller-facing
972
972
  # rather than to the storage key (#1935).
973
+ references = await ref_check(self._client, transformed_config, "scene")
973
974
  # Scene writes reload every scene; activation has to follow that reload.
974
975
  async with config_reload_waiter(
975
976
  self._client, "scene_reloaded", enabled=activate
@@ -1047,6 +1048,7 @@ class ConfigSceneTools:
1047
1048
  canonical_files=_SCENE_SKILL_FILES,
1048
1049
  referenced_files=None,
1049
1050
  )
1051
+ merge_validation_meta(response, references)
1050
1052
  return response
1051
1053
 
1052
1054
  @staticmethod
@@ -1261,10 +1263,7 @@ class ConfigSceneTools:
1261
1263
  ):
1262
1264
  await self._client.get_scene_config(scene_id, resolution=resolution)
1263
1265
 
1264
- # Cross-check literal service and entity references against the
1265
- # live registries. Soft warnings only.
1266
- validation_meta = await validate_config_references(self._client, config_dict)
1267
-
1266
+ references = await ref_check(self._client, config_dict, "scene")
1268
1267
  # ``resolved_id`` is already the storage key (from the hash-verify
1269
1268
  # fetch or the resolve above) — pass it as the write target to skip
1270
1269
  # the redundant re-resolve. ``scene_id`` stays the caller id so a
@@ -1323,7 +1322,7 @@ class ConfigSceneTools:
1323
1322
  if activate:
1324
1323
  await self._activate_scene(result, entity_id, standalone=False)
1325
1324
 
1326
- merge_validation_meta(result, validation_meta)
1325
+ merge_validation_meta(result, references)
1327
1326
 
1328
1327
  # Issue #1168 R3 blocker 6: build response from ``resolved_id``
1329
1328
  # so the outer ``scene_id`` always matches the storage key.
@@ -58,7 +58,7 @@ from .helpers import (
58
58
  reject_malformed_list_fields,
59
59
  validate_identifier_not_empty,
60
60
  )
61
- from .reference_validator import validate_config_references
61
+ from .reference_validator import validate_config_references as ref_check
62
62
  from .tool_hints import read_only_hints, write_hints
63
63
  from .util_helpers import list_visible_registry_ids
64
64
  from .ws_waiters import verify_entity_removed, wait_for_entity_registered
@@ -978,6 +978,7 @@ class ConfigScriptTools:
978
978
  # ``script_id`` stays the caller id (the fetched config already
979
979
  # carries an alias here, so the default is a no-op, but keep the
980
980
  # contract consistent — #1935).
981
+ references = await ref_check(self._client, transformed_config, "script")
981
982
  result = await self._client.upsert_script_config(
982
983
  transformed_config, script_id, resolved_id=resolved_id
983
984
  )
@@ -1007,6 +1008,7 @@ class ConfigScriptTools:
1007
1008
  canonical_files=_SCRIPT_SKILL_FILES,
1008
1009
  referenced_files=bp_warnings.referenced_files,
1009
1010
  )
1011
+ merge_validation_meta(response, references)
1010
1012
  return response
1011
1013
 
1012
1014
  async def _take_control_config(self, script_id: str) -> TakenControl:
@@ -1038,11 +1040,7 @@ class ConfigScriptTools:
1038
1040
  detached_blueprint: str | None = None,
1039
1041
  ) -> dict[str, Any]:
1040
1042
  """Validate references, upsert, finalize wait/category, and build the response."""
1041
- # Cross-check literal service and entity references against
1042
- # the live registries. Soft warnings only — the write still
1043
- # happens, even when references don't resolve (#940).
1044
- validation_meta = await validate_config_references(self._client, config_dict)
1045
-
1043
+ references = await ref_check(self._client, config_dict, "script")
1046
1044
  result = await self._upsert_script(config_dict, script_id, resolved_key)
1047
1045
 
1048
1046
  await self._finalize_script_write(
@@ -1052,7 +1050,7 @@ class ConfigScriptTools:
1052
1050
  if bp_warnings:
1053
1051
  result["best_practice_warnings"] = list(bp_warnings)
1054
1052
 
1055
- merge_validation_meta(result, validation_meta)
1053
+ merge_validation_meta(result, references)
1056
1054
 
1057
1055
  response = {
1058
1056
  "success": True,