ha-mcp-dev 8.6.0.dev2955__tar.gz → 8.6.0.dev2958__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 (768) hide show
  1. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/PKG-INFO +1 -1
  2. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/pyproject.toml +1 -1
  3. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/pyproject.toml.orig +1 -1
  4. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +26 -25
  5. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/VENDORED +1 -1
  6. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/__init__.py +1 -1
  7. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/client.py +50 -20
  8. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/group.py +29 -7
  9. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +7 -2
  10. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +69 -3
  11. ha_mcp_dev-8.6.0.dev2958/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +410 -0
  12. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/resources/template.py +277 -17
  13. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +30 -1
  14. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +59 -1
  15. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +6 -4
  16. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +1 -1
  17. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +55 -0
  18. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +15 -2
  19. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +7 -2
  20. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +51 -20
  21. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +12 -26
  22. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +17 -2
  23. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +1 -19
  24. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +4 -5
  25. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +1 -26
  26. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/server.py +17 -29
  27. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +132 -2
  28. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +52 -12
  29. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +5 -0
  30. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +2 -1
  31. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/requirements.txt +1 -1
  32. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/LICENSE +0 -0
  33. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/README.md +0 -0
  34. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/__init__.py +0 -0
  35. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/__main__.py +0 -0
  36. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_pypi_marker +0 -0
  37. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_rich_compat.py +0 -0
  38. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/__init__.py +0 -0
  39. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  40. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  41. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  42. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  43. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  44. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  45. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  46. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  47. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  48. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  49. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  50. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  51. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  52. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  53. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  54. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  55. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  56. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  57. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  58. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  59. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  60. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  61. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  62. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  63. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  64. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  65. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  66. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  67. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  68. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  69. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  70. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  71. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  72. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  73. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  74. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  75. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  76. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  77. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  78. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  79. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  80. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  81. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  82. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  83. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  84. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  85. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  86. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  87. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  88. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  89. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  90. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  91. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  92. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  93. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  94. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  95. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  96. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  97. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  98. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  99. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  100. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  101. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  102. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  103. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  104. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  105. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  106. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  107. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  108. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  109. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  110. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  111. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  112. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  113. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  114. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  115. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  116. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  117. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  118. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  119. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  120. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  121. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  122. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  123. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  124. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  125. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  126. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  127. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  128. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  129. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  130. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  131. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  132. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  133. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  134. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  135. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  136. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  137. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  138. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  139. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  140. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  141. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  142. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  143. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  144. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  145. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  146. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  147. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  148. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  149. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  150. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  151. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  152. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  153. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  154. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  155. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  156. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  157. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  158. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  159. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  160. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  161. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  162. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  163. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  164. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  165. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  166. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  167. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  168. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  169. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  170. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  171. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  172. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  173. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  174. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  175. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  176. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  177. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  178. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  179. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  180. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  181. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  182. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  183. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  184. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  185. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  186. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  187. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  188. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  189. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  190. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  191. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  192. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  193. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  194. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  195. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  196. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  197. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  198. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  199. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  200. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  201. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  202. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  203. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  204. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  205. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  206. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  207. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  208. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  209. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  210. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  211. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  212. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  213. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  214. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  215. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  216. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  217. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  218. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  219. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  220. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  221. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  222. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  223. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  224. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  225. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  226. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  227. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  228. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  229. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  230. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  231. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  232. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  233. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  234. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  235. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  236. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  237. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  238. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  239. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  240. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  241. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  242. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  243. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  244. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  245. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  246. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  247. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  248. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  249. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  250. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  251. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  252. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  253. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  254. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  255. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  256. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  257. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  258. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  259. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  260. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  261. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  262. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  263. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  264. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  265. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  266. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  267. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  268. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  269. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  270. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  271. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  272. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  273. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  274. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  275. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  276. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  277. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  278. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  279. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  280. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  281. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  282. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  283. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  284. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  285. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  286. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  287. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  288. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  289. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  290. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  291. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  292. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  293. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  294. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  295. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  296. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  297. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  298. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  299. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  300. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  301. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  302. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  303. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  304. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  305. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  306. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  307. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  308. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  309. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  310. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  311. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  312. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  313. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  314. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  315. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  316. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  317. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  318. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  319. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  320. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  321. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  322. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  323. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  324. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  325. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  326. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  327. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  328. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  329. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  330. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  331. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  332. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  333. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  334. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  335. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  336. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  337. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  338. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  339. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  340. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  341. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  342. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  343. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  344. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  345. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  346. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  347. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  348. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  349. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  350. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  351. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  352. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  353. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  354. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  355. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  356. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  357. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  358. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  359. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  360. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  361. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  362. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  363. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  364. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  365. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  366. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  367. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  368. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  369. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  370. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  371. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  372. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  373. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  374. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  375. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  376. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  377. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  378. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  379. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  380. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  381. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  382. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  383. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  384. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  385. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  386. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  387. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  388. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  389. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  390. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  391. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  392. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  393. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  394. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  395. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  396. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  397. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  398. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  399. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  400. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  401. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  402. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  403. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  404. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  405. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  406. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  407. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  408. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  409. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  410. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  411. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  412. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  413. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  414. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  415. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  416. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  417. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  418. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  419. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  420. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  421. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  422. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  423. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  424. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  425. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  426. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  427. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  428. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  429. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  430. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  431. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  432. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  433. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  434. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  435. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  436. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  437. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  438. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  439. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  440. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  441. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  442. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  443. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  444. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  445. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  446. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  447. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  448. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  449. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  450. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  451. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  452. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  453. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  454. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  455. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  456. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  457. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  458. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  459. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  460. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  461. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  462. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  463. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  464. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  465. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  466. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  467. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  468. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  469. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  470. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  471. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  472. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  473. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  474. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  475. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  476. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  477. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  478. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  479. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_version.py +0 -0
  480. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/app_discovery.py +0 -0
  481. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/auth/__init__.py +0 -0
  482. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/auth/consent_form.py +0 -0
  483. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/auth/oidc_compat.py +0 -0
  484. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/auth/provider.py +0 -0
  485. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/backup_diff.py +0 -0
  486. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/backup_entity_ids.py +0 -0
  487. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/backup_manager.py +0 -0
  488. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/backup_tags.py +0 -0
  489. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/browser_landing.py +0 -0
  490. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/client/__init__.py +0 -0
  491. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/client/admin_routes.py +0 -0
  492. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/client/rest_client.py +0 -0
  493. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/client/supervisor_client.py +0 -0
  494. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/client/websocket_client.py +0 -0
  495. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/client/websocket_listener.py +0 -0
  496. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/config.py +0 -0
  497. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/config_backup.py +0 -0
  498. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/config_meta.py +0 -0
  499. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/config_overrides.py +0 -0
  500. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/config_registry.py +0 -0
  501. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/config_settings.py +0 -0
  502. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  503. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  504. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  505. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  506. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  507. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  508. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/errors.py +0 -0
  509. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/ha_request_queue.py +0 -0
  510. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  511. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/http_transport.py +0 -0
  512. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/image_info.py +0 -0
  513. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/llm_exposure.py +0 -0
  514. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/log_filters.py +0 -0
  515. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/__init__.py +0 -0
  516. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/approval_queue.py +0 -0
  517. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/decision_pin.py +0 -0
  518. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/decisions.py +0 -0
  519. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/editing.py +0 -0
  520. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/evaluator.py +0 -0
  521. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/events.py +0 -0
  522. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/handlers.py +0 -0
  523. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/middleware.py +0 -0
  524. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/model.py +0 -0
  525. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/mrtr.py +0 -0
  526. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/persistence.py +0 -0
  527. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/server_channels.py +0 -0
  528. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/value_sources.py +0 -0
  529. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/py.typed +0 -0
  530. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/read_only.py +0 -0
  531. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/redaction.py +0 -0
  532. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/renamed_tools.py +0 -0
  533. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  534. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  535. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  536. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
  537. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  538. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  539. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  540. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  541. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  542. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  543. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  544. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  545. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  546. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  547. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  548. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
  549. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  550. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/server.py +0 -0
  551. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/server_lifespan.py +0 -0
  552. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/server_tool_text.py +0 -0
  553. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/__init__.py +0 -0
  554. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  555. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  556. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  557. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  558. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  559. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  560. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  561. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  562. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  563. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  564. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_theme.py +0 -0
  565. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  566. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  567. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  568. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  569. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  570. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  571. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  572. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  573. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  574. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  575. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  576. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  577. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  578. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  579. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  580. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  581. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  582. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  583. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings.css +0 -0
  584. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings.html +0 -0
  585. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
  586. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
  587. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
  588. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
  589. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
  590. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
  591. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
  592. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
  593. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
  594. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/smoke_test.py +0 -0
  595. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  596. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/strict_bps.py +0 -0
  597. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tool_dispatch.py +0 -0
  598. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/__init__.py +0 -0
  599. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/area_messages.py +0 -0
  600. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/auto_backup.py +0 -0
  601. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/backup.py +0 -0
  602. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/backup_access.py +0 -0
  603. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/backup_on_demand.py +0 -0
  604. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  605. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/best_practice_result.py +0 -0
  606. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  607. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  608. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  609. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/blueprint_write.py +0 -0
  610. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/bug_report_config.py +0 -0
  611. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/bug_report_templates.py +0 -0
  612. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/bulk_selector.py +0 -0
  613. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/coercion.py +0 -0
  614. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_api.py +0 -0
  615. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_config_entries.py +0 -0
  616. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_config_reads.py +0 -0
  617. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  618. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_devices.py +0 -0
  619. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_helper_collections.py +0 -0
  620. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_registries.py +0 -0
  621. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  622. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_backup.py +0 -0
  623. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  624. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  625. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
  626. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  627. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  628. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  629. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
  630. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  631. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
  632. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
  633. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/create.py +0 -0
  634. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
  635. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
  636. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
  637. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
  638. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
  639. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
  640. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/update.py +0 -0
  641. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
  642. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
  643. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_write_errors.py +0 -0
  644. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_write_helpers.py +0 -0
  645. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  646. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
  647. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/dev_backup.py +0 -0
  648. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/device_control.py +0 -0
  649. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/device_enrichment.py +0 -0
  650. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
  651. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
  652. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/entity_registration.py +0 -0
  653. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/entity_update_fields.py +0 -0
  654. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  655. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/hacs_registration.py +0 -0
  656. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/helpers.py +0 -0
  657. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
  658. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/log_common.py +0 -0
  659. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/log_sources.py +0 -0
  660. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  661. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  662. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/radio/__init__.py +0 -0
  663. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/radio/base.py +0 -0
  664. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/radio/matter.py +0 -0
  665. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/radio/thread.py +0 -0
  666. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  667. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/radio/zwave.py +0 -0
  668. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
  669. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/reference_validator.py +0 -0
  670. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/registry.py +0 -0
  671. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  672. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/response_helpers.py +0 -0
  673. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/scene_discovery.py +0 -0
  674. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/__init__.py +0 -0
  675. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/base.py +0 -0
  676. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/component.py +0 -0
  677. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/entities.py +0 -0
  678. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/legacy.py +0 -0
  679. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/modes.py +0 -0
  680. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/overview.py +0 -0
  681. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/response.py +0 -0
  682. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/state.py +0 -0
  683. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  684. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  685. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  686. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  687. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  688. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  689. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  690. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  691. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  692. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  693. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tool_hints.py +0 -0
  694. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  695. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_addons.py +0 -0
  696. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_areas.py +0 -0
  697. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  698. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  699. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  700. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_calendar.py +0 -0
  701. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_camera.py +0 -0
  702. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_categories.py +0 -0
  703. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_code.py +0 -0
  704. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  705. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  706. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  707. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  708. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  709. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  710. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_dev.py +0 -0
  711. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_energy.py +0 -0
  712. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_entities.py +0 -0
  713. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  714. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_groups.py +0 -0
  715. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_hacs.py +0 -0
  716. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_history.py +0 -0
  717. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_integrations.py +0 -0
  718. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_labels.py +0 -0
  719. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_logs.py +0 -0
  720. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_radio.py +0 -0
  721. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_registry.py +0 -0
  722. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_resources.py +0 -0
  723. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_search.py +0 -0
  724. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  725. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_service.py +0 -0
  726. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_services.py +0 -0
  727. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_system.py +0 -0
  728. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_themes.py +0 -0
  729. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_todo.py +0 -0
  730. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_traces.py +0 -0
  731. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_updates.py +0 -0
  732. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_utility.py +0 -0
  733. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  734. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  735. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  736. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_zones.py +0 -0
  737. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/util_helpers.py +0 -0
  738. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/validation_middleware.py +0 -0
  739. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/ws_waiters.py +0 -0
  740. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/transforms/__init__.py +0 -0
  741. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/transforms/categorized_search.py +0 -0
  742. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/transforms/component_helpers.py +0 -0
  743. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/transforms/component_search.py +0 -0
  744. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  745. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  746. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/transport_security.py +0 -0
  747. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/update_check.py +0 -0
  748. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/__init__.py +0 -0
  749. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/config_hash.py +0 -0
  750. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/config_write_lock.py +0 -0
  751. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  752. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/data_paths.py +0 -0
  753. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  754. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/domain_handlers.py +0 -0
  755. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/entity_membership.py +0 -0
  756. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  757. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  758. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  759. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/operation_manager.py +0 -0
  760. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/python_sandbox.py +0 -0
  761. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  762. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/skill_loader.py +0 -0
  763. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/usage_logger.py +0 -0
  764. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/visibility/__init__.py +0 -0
  765. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/visibility/enforcement.py +0 -0
  766. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/visibility/model.py +0 -0
  767. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/visibility/persistence.py +0 -0
  768. {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/visibility/resolver.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 8.6.0.dev2955
3
+ Version: 8.6.0.dev2958
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Keywords: mcp,home-assistant,ai,automation,smart-home
6
6
  Author: Julien
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "8.6.0.dev2955"
7
+ version = "8.6.0.dev2958"
8
8
  description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13,<3.15"
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "8.6.0.dev2955"
7
+ version = "8.6.0.dev2958"
8
8
  description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
9
9
  readme = "README.md"
10
10
  # Upper bound widened to <3.15 so the package installs on Home Assistant's
@@ -1,7 +1,7 @@
1
1
  43070e2d4e532684de521b885f385d0841030efa2b1a20bafb76133a5e1379c1 LICENSE
2
2
  21859d4324326a6fb383cfd827626db2278088d4659000a8569f55262309a894 REQUIRES.txt
3
- 8b4e81d4cab8dedb5288e049b552561ecd69fec834a6d5d8520cf1a2d01a4ba4 VENDORED
4
- d6384f05e63f59d7abb2618a31e8f419a6675552ea1a7fc73a9f5b430012e0e2 __init__.py
3
+ e12f954d5272b6d9e098942fc232a0e1993b945b0d7184b0b850df99afafcc79 VENDORED
4
+ 3cf3adee844fb112711cfb37a8974f76b7d47b678721e180ff4ae21cada26343 __init__.py
5
5
  2ae9ce0d217923abf551b6f8bcf08e516529b9a6abab160bab5d8c9b7e245c3d _compat.py
6
6
  0fe101433a655a48e5fd1dde0c75879f3a74f9092d2b935bd71fad19bcfb77a1 _install_hints.py
7
7
  a9c59fe78564360444de04484a2b0906569fb58408be3c968be3f81a5e3015a4 _warnings.py
@@ -47,11 +47,11 @@ f23abd973d004567dacf840728835c74bd94963ab48355990ee27879b598c7a5 client/auth/be
47
47
  e96f4731af86d4755a597300926782f82219aee6d03fd760698f2c4db66ab8d3 client/auth/client_credentials.py
48
48
  6cde4f73a0d978660992617ddf1db98417ffecdace0e25e49e78cb42e55dea09 client/auth/oauth.py
49
49
  b7f310d25afea2deec36a8ad055cf81827feaac934d1391a05b7cc92b2c9e5d6 client/caching.py
50
- c26c52fff70a0ac01b2823a821fa96e11f18e36253e9aa365849e0d508676973 client/client.py
50
+ 43c887efd89e4f089bb7360e864a39fe210ca6db59f711182aaf38d044020405 client/client.py
51
51
  ec3d69cbdc6d1331b028afad95616431d6bd02e91a2bcd76a12c30b6618f3d88 client/dependencies.py
52
52
  1c6fbd49eab32cf03f8b1029f398f0fee20245dfc0a6225476622d8d5ed24b2a client/elicitation.py
53
53
  abdc07c2ae78249cfb095295120a982db23a7cfbbe90ec50ce5f964475c981e3 client/extension_hooks.py
54
- dc1d498f1d723a1447cb4fa358b3dcf786eb7f4e1b048c3238b28ced34c23b67 client/group.py
54
+ a7fe536d6fc5dbad6a2c8d34b3b8074a0c28e7572ee69c7d816ef8fd4617f2e9 client/group.py
55
55
  0648016833612089c873938a63d69cded6336e8c8d9867e9412d4e2dac9c2f97 client/logging.py
56
56
  4014857ab79e71cd06f28afaa160f00d9c646c63a63bb99565174933497fc501 client/messages.py
57
57
  01e24f9b114fd85aacd62fb99631adedb23e5293e9e72cfc9b2680035364c7a9 client/mixins/__init__.py
@@ -74,7 +74,7 @@ d576529023ff2096df4238a162f1e6c82fda1eff7a004751a1e09d0c0af46e01 client/transpo
74
74
  a2fc0c9ba36479b0d79b53b9d43a2ddc0d054a71444437a1b6be5d02228504de client/transports/inference.py
75
75
  cd5fdcdb90616756ed695d7d57a30cb420d06c57b776615e81bac2c596b5ec17 client/transports/memory.py
76
76
  92c95544d195ce5e49bd1f7f2853fd743bb81bbd22416db63c238227b00c0b4a client/transports/sse.py
77
- 42501b386a0f4f5dcb1d55ab093167c9724fea17af92e1425dbb2dc92225da2b client/transports/stdio.py
77
+ 2ac68c04792107da432242d77f4b6cca6d8923025b5f33cf46a1733da7bcd3c8 client/transports/stdio.py
78
78
  aca9276122354f5f7652f4acceac300e5436798429c72c2b3532e88f5efb4985 contrib/README.md
79
79
  e5a5146354d214ab73d69bd32d20ea9140a41a4baa31f31936c2de68da848007 contrib/bulk_tool_caller/README.md
80
80
  c6f19249a5174d0adcdf57ab0688b51a1ec18a480e9621130e26154cfdeb2f16 contrib/bulk_tool_caller/__init__.py
@@ -93,7 +93,8 @@ d7ec0ff66e333e21df80829ddd5a1ad9dddd955b2b8456f199e08c732ca1ea77 contrib/mcp_mi
93
93
  65d2365c668228499112fdf649f35e93f7af4dc652cd08012c67ea6abb55d46a exceptions.py
94
94
  e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 experimental/__init__.py
95
95
  01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b experimental/transforms/__init__.py
96
- 15e2f6aa9dc2051af34bb5d0470adc8ec45f402a50706ff7fe950c2f2dc5184f experimental/transforms/code_mode.py
96
+ bfadd96bae82fce5cd12f3843e039d0ad1d0e83ab283a81973070bd7448a6cda experimental/transforms/code_mode.py
97
+ 34acdc402ef277f44a92d4b3c32459a9b55c19712dac82007ec5052e92b80fc4 experimental/transforms/jev_search.py
97
98
  a08727048d5bdc6f513fd4161f1a53ae1ffbcf387cc62b6319317946814cd4c5 mcp_config.py
98
99
  353a26dc9d40c4e682ebc1411838ee0920a759ced021d264057b86c0335f1a24 prompts/__init__.py
99
100
  abddba9c78219818445f1147c21476544c55e3b994d80e8e647ea7072421f2b1 prompts/base.py
@@ -103,7 +104,7 @@ b5074534e408ad9f8e5a325076e1549cecd0a0c8c7ddfbf016fa3b041c3509cb resources/__in
103
104
  42591067ae671ba26ee049b081b2e292bd5f7269365e96ce9daf8f8ceafd4a9a resources/base.py
104
105
  6c5f589e472b41840b5c1777663495efbdede20e1aeb7adfccaa4360ac4a8a67 resources/function_resource.py
105
106
  1617d885ef49690595e063c5453476a7adb84503f31bd8d37c93a43b00d036fe resources/security.py
106
- fdbb8544f56cdd9fd79acd06ef1c31dc25af727544ffa8928bc081f2e35a8534 resources/template.py
107
+ 8abf99e12e57b75fd573f903e67b01b69c636761bc52f2dedfa2141324616456 resources/template.py
107
108
  f62be5cd46be03e6f4fdaacfc5c5a6acf729516f528e56e146c0aa83a6204e61 resources/types.py
108
109
  827d84d4bc780342fdbfd88101ac4f25b8a39b79ae63f8b9d9f636580cec52bb server/__init__.py
109
110
  260232a96fb443347da645d6fa1a0d32c9599a7c00e737c285158a3267c708a9 server/auth/__init__.py
@@ -117,10 +118,10 @@ e52df6b15b5b66edad8e11c71bf32d8f9cacba628a1d7a9ed97e440f6a491296 server/auth/ha
117
118
  482e01b4ecc8af2714eb1bc50cc7afa0bdbadab1e583171cb9aa70fa2b270af0 server/auth/oauth_proxy/__init__.py
118
119
  5f490615f239c44e861b7860fbdabc02e4a768587e9e77259b7695b2628576d3 server/auth/oauth_proxy/consent.py
119
120
  66c2b86e445bb5e930eae7ec7c495a20e752ceec57af059fd96de66ebf2fcce0 server/auth/oauth_proxy/models.py
120
- 59fdac16c65da5bacd0994f92d1e3f23dc39253d984ef16d5cc5c01a1b48380a server/auth/oauth_proxy/proxy.py
121
+ aa221b963ec2dc1466a4acc0fc41f440a4f1c1926fede489dd1bbc56f3f1cea0 server/auth/oauth_proxy/proxy.py
121
122
  c20a999e75dbfbd5801ccf0172127b316f8bca1807fb3ca282cadcdc0a37295e server/auth/oauth_proxy/ui.py
122
123
  a7dfed182cd72300a09136f500738cafd81960807b474fd184143a24fa0898d9 server/auth/oauth_proxy/upstream.py
123
- b44d5db31e3f760b18d97a363027d2777ec0c7ee982339eb2f5d507894bc121e server/auth/oidc_proxy.py
124
+ 99d06bf47c740b3b42b84269058d6ee71c52fabea047aec8189ca150aa8edd2b server/auth/oidc_proxy.py
124
125
  e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 server/auth/providers/__init__.py
125
126
  2309357e391e3ca50f368b87581c915f5da83103d6fe8b157fc3f6365ae940f6 server/auth/providers/auth0.py
126
127
  2096389558eb1eb799a5e69379dcfffcad2ee0fe7a9bb98b632871581c456cce server/auth/providers/aws.py
@@ -130,7 +131,7 @@ b682ebb2419462e9bb506f2bf473d8ae33febcce4055df5dd506a4845c81e47f server/auth/pr
130
131
  0b86ffe4e0b1f06c040b264dbd88a44943ed9d15392419f55956503d83760642 server/auth/providers/descope.py
131
132
  d98f08e8041870f3effa331b2837d0073c26079872dd34b501c0804669625442 server/auth/providers/discord.py
132
133
  df69c87adbdc2caee72185bdeaf55d19bf5308f94b2756343177556878f44ae2 server/auth/providers/github.py
133
- 9a0dd8fb37485642a4b7328f4796e7af950a7d4311b6524d1450331b016debf7 server/auth/providers/google.py
134
+ 32ccc82663080f5d3e0c423e8c9bdb58b6b560291d60a17c289ad399e410e059 server/auth/providers/google.py
134
135
  3a76215676072a4c7e31971e3c79e57a3ea78ff10b79e5fc90cd371915ddd7ff server/auth/providers/huggingface.py
135
136
  57fa08d818ae235752a65083d1e19daeb65c7b6354ad81c76aed0257b4ea9e61 server/auth/providers/in_memory.py
136
137
  f63a30cdc4778cf0f441a433e6aff9233433f4e0c15e997e2d39b3e02019b0ec server/auth/providers/introspection.py
@@ -142,11 +143,11 @@ f858f390ad6ca87990e548cdca584cef57fc93a0d2d36b4f5353dad2c4c0f7bf server/auth/pr
142
143
  df16f6cf532f38b87318d06d7c0f97717699614ada54fcfb53701d5281ed6cc5 server/auth/providers/supabase.py
143
144
  3da61543f26146cf2597089f17580ad4a9e5d3423e92425ecc2b1a8a6c9bceda server/auth/providers/workos.py
144
145
  9ed8d6fec5e0ca8fdb9716cd0f80f178a0814ed34b2202770f509c1fe96305e5 server/auth/redirect_validation.py
145
- 5010ce2f386b64be223a35425f2548f9564db59a22c615d9eb54dd1909504256 server/auth/ssrf.py
146
+ 0a6d55566e2c33fe15c31969dd68547181205bce148486dcb6183f314abf4141 server/auth/ssrf.py
146
147
  871c89e8a16ca2a3cd030b94108abb0bf15d8addab05b398f959da8445f4e6a9 server/caching.py
147
148
  38f783123395ffa153bc91af5db1ffac86eceaa249333d2991a59e057a2f4af1 server/completions.py
148
149
  542477c828645b4fd2c08bafb7fa1ee4f8721a3f07744af05d9035c8852a1554 server/context.py
149
- 1c7e1cc1e5cdb2ce9646fd9963d98186a2df2e42043f3d7712bd1a932174a8cf server/dependencies.py
150
+ 66e9338f10e07693891eaf68c5654a5a41fdec4e54a3a3a8917d3899613e662f server/dependencies.py
150
151
  3affb1031ddcf7f6f02322075340ee46ff21f3cb74f0d3c2f48d21cdc4cd0899 server/elicitation.py
151
152
  e0497cf65d8a93849bf2873b94e18abaff2d8a9a879d24db9af22d52548bb696 server/event_store.py
152
153
  29bc8c6a594ec12a859fcf54658bedc59e7e3a507e861b3a79a72ca5d2fdb83c server/extensions.py
@@ -155,7 +156,7 @@ c939ec1886308f99257b07aaa73a4781565d5d3e170fc13b0d8b36f4735a4fda server/lifespa
155
156
  9ad85391f6cdd905a7168a579afdf423bf9600d5067b09123ac201295e6c1126 server/low_level.py
156
157
  dc669c15efc3c6bdeb531a6267860c141bb86d64e49c0ee586805c4866bd0c01 server/middleware/__init__.py
157
158
  172f87828b7aa58bcf31e377c149c9fbc05bf6aba377e8e92a8d4757ebda5bf0 server/middleware/authorization.py
158
- cc23eab309c7ef45bd9cf44c3112a7aed7f77cd3a41abb93568275d322521e96 server/middleware/caching.py
159
+ f5ea7269f47d6fc3ff301530492a3a8d8d15d82870a7d89ad5df361ce0fccd46 server/middleware/caching.py
159
160
  32e78726614e5a69b3ec87bb6868b151ad6955f3eaac3a41b5a9d6151a0efa55 server/middleware/dereference.py
160
161
  d9d61213e77f496a3d73f2b5115af44732dbdf30bd5ea78d4c3c0d86abd8ad21 server/middleware/error_handling.py
161
162
  d55654f305388914c045482ffaea32832fdfc57f17f90f558901ab422fe04cc2 server/middleware/logging.py
@@ -167,21 +168,21 @@ f866f0fd1fe052a9835c23197ed868ac270727bec9f443d76a35d3d10cc7bdce server/middlew
167
168
  c065a1287db24cd7662162f6f56a36500a58a9412182348046e3aff4a3750c76 server/middleware/tool_injection.py
168
169
  7dbadca2563c9c44dbd242d6f75f53df1827b5ca24e09c76a26a63c450768467 server/mixins/__init__.py
169
170
  6272edf875b7f0926b26d97f924fd4f1bd06eb80ef6f90cc18e507df7eedab94 server/mixins/lifespan.py
170
- e2d507cb29b77c843fea5249f7e6f02a297ae5eedf4eed42c2bd049629ac28ac server/mixins/mcp_operations.py
171
+ 52af4cd66251d312a9c2cc3dd822bf25512f2b8a39f2571dc6e7dd5184ffa56c server/mixins/mcp_operations.py
171
172
  ff3963b066eceb0e5a81fd16fbdd0f414e11aeac73959ef7761b121a767fb939 server/mixins/transport.py
172
173
  cd4f7cade13e4a23391117605bbbd4e9d9f66c43d949c09e4fef05ff279a5a32 server/providers/__init__.py
173
174
  adad3883f3554739df02cbda56f8fa2c50fbd0259c6cc4dd0c6c84281b2043ed server/providers/addressing.py
174
175
  cd022ac9e2a9846c76ed95be96b136f36a1d4a9edcde1b73e62062ba43622556 server/providers/aggregate.py
175
- 8550d51c03acdec169a4f776368dd0c8415a0b3d25d75c6b0815f683733b227e server/providers/base.py
176
- 2a0f32cb44876e57e2ee217b3cdec16e3953af55f1daa2dc23b6e5f8d9a15064 server/providers/fastmcp_provider.py
177
- 05598bafbb084a589720ecadd459d76954288e5a640f4ef6948272b57b8deb10 server/providers/filesystem.py
176
+ 93f53dffe65b9751b73dfbb7ae2efd21c50a47392e7acf0a477f6618d2ef3a82 server/providers/base.py
177
+ 174acc648b9862c5e744f6dc0085fcb4b30578cf7e0e772af846217587b41bcb server/providers/fastmcp_provider.py
178
+ ae7b241be3607f9702aa8ea5907f7c60fd184403df3914c8c8e69932b5956b27 server/providers/filesystem.py
178
179
  0f2e2b16740711527589a4315799c19fb2496337a71b77b9820ead3ab256a729 server/providers/filesystem_discovery.py
179
180
  0f0702f2501537c34982eba9d930afde4d22638d1623ce6691198ce46f5c3d34 server/providers/local_provider/__init__.py
180
181
  5b0058ec22c9ed8b5c2b3833e7e6beb34066f73f1818df1b62741ddb369b7edf server/providers/local_provider/decorators/__init__.py
181
182
  101c860292375904bb89f3f8e4590eb9537f232f4aab4e207ac96f9bad229241 server/providers/local_provider/decorators/prompts.py
182
183
  18300b436f36bb796a530e9b3f077c5aaccb5e9eef00a00e9e618321160d8db4 server/providers/local_provider/decorators/resources.py
183
184
  793779ff2289d4281e9bca891ffb09e397445e314d0dc9c7640ec817fb999814 server/providers/local_provider/decorators/tools.py
184
- 0a16d7a534974141054d6cb962e7ed7907390191bf40c9f00a68bb43d6b01205 server/providers/local_provider/local_provider.py
185
+ 91d662fa33ab5c71a889e5be59135dd2780758d295c616fc3b140c6e332dda34 server/providers/local_provider/local_provider.py
185
186
  11c75b6557ce98f4855c76aa0d7740df71e704d05fda8435d92f89aee4a5623e server/providers/openapi/README.md
186
187
  9e4dd35d653c9363b7c7679b38ca3f653b53a359065507046bce94db5dfe4bd5 server/providers/openapi/__init__.py
187
188
  3eedd623727b69f35c701c7f20e5ea499eee0ed43353310a33425cb32ff04798 server/providers/openapi/components.py
@@ -189,15 +190,15 @@ cd022ac9e2a9846c76ed95be96b136f36a1d4a9edcde1b73e62062ba43622556 server/provide
189
190
  b00f94d08ce939d3aca4fb4e9d77d34633570e505640bd7c0a3a4cfb27030b05 server/providers/openapi/routing.py
190
191
  776be4ae2a017410f3b505fe5a6ade18690f396545115ba3bf4e525f30ea3164 server/providers/prefab_payload.py
191
192
  59455808dce7fb5c90fa043ca0a1cbe7d911658f79efe92771dcc1b1109c3789 server/providers/prefab_synthesis.py
192
- 9a73913afb1857025d489d1e7c3521058248c67ad7fa4835bf185db0f855dc46 server/providers/proxy.py
193
+ a03d17e3298444cb16e4c1ccb079f182b184fafe7807b1d914606bf95743b701 server/providers/proxy.py
193
194
  6bb7641e4c222ff359a38f9617987cc64a8c3eaf04118346b1e96f8b336bc9da server/providers/skills/__init__.py
194
195
  8845d0ceb5a62372ea24f338522998282552941c29801810448444edf85b513d server/providers/skills/_common.py
195
196
  ce1a7b8a0adece4168f039721d3c0d196da79ae6d8d2b7835ef13733f6c510ab server/providers/skills/claude_provider.py
196
197
  571e579ffa410d5a932dc7afeeb76717171ac927450ecd408ca7b2c99e7c5150 server/providers/skills/directory_provider.py
197
198
  a427c8444b114edb0a6bf40541dd0a3c53b8adfb59ad292a3eb785711825e145 server/providers/skills/skill_provider.py
198
199
  b759c2e9f832ff7b27a9d4347a12851e235d59f7cfa0360aba5efd57377a4adb server/providers/skills/vendor_providers.py
199
- 59802937576af905a862e1768df1677ad07a47288b5cb31b75cca6f1090b6472 server/providers/wrapped_provider.py
200
- 68d9404589d657563aa8a67211819c6d44ee846991a3f417d08f0f3947392865 server/server.py
200
+ b1c5da43ebebd945011ade0432f022d0f10966850d6fb43b9530cbf67e26ca6d server/providers/wrapped_provider.py
201
+ 13f132a0d4599ce0e221d0e4e258ea3b3db16b2ee963489574880b3c1e83f664 server/server.py
201
202
  a50d0db0003d63db49a3ec62b18dc75e267d6e03b7165f11f02992316be4e160 server/session_scoped_event_store.py
202
203
  a172b6697b515083db1d9f2466d8c88659d37427ece0d292c26d1646c1e72e2f server/sessions.py
203
204
  24b63d7adc0e3e7ebb5528924d9cf2e5789faad798bd39175690c8dca0742ac4 server/telemetry.py
@@ -207,7 +208,7 @@ ef58b435263324aac98f71dd08057232e2eb39abdaec2697e4f2369e98c7734a server/transfo
207
208
  d653f84b07153d687b486a19244c4a179e8378f3fb8f34f9f2c6e8ab18ec9dad server/transforms/prompts_as_tools.py
208
209
  35823161ae66939a64ed2d4365af0eae4fa02177907b6d2ac9bb9d1e3f3d815f server/transforms/resources_as_tools.py
209
210
  250bd40ffdaccfd4b0df19092965d743c1a7d55ff3e6cb812a3ade85e4a5419f server/transforms/search/__init__.py
210
- c59c7056e2ba2c089aa076d803f1c1739ba9e76cb0ad3bfa803481c18af46d93 server/transforms/search/base.py
211
+ 40329f5c2e7da5a487871caef331d9cb6bd94b3dd18ab5581e7cc63c87aafb8b server/transforms/search/base.py
211
212
  587b7a7523796b9f56c547104a48ef52da73990fc128b775579ccc92d2373fa8 server/transforms/search/bm25.py
212
213
  b81fef10f30d792bc261e76a0f97437a596febd76b67d9b46e264c45eeda770e server/transforms/search/regex.py
213
214
  e83d5c70c181f5145ebf4bd2fb4a808f6ebf4eb1ce9a052165a07d983045c44a server/transforms/tool_transform.py
@@ -233,7 +234,7 @@ a98fe36c4923efe99beddcd67677f1afe3fc56a86d262352e270141d0b208f6a utilities/cli.
233
234
  d254480ddb82cb17eab1264cb27a06e4538980efdabc70abf4f23279f3c1c3aa utilities/http.py
234
235
  5bd8fcffa8a384ed85bd4e251d111fd72345df1788c511611d61fdc51c40aea3 utilities/inspect.py
235
236
  eb2034d2a8a60daa08b6191420ef609e9e88a46527330d75c86e9f4645499edb utilities/json_schema.py
236
- 7e5041173e9ba5be731e241543778f3fd36087e97eea84097cf025de056fb65a utilities/json_schema_type.py
237
+ 008236db5e99f0da390288f087be5fdcae34c7124c77c035ab8ad48d263d4ce2 utilities/json_schema_type.py
237
238
  41a30eee26f03f4232b3b0ab3e88bfc925feaa4c08077c80f06a7eb8b4c5e1c1 utilities/lifespan.py
238
239
  c9734ef52ddc7185828b7a51bee16cff935cc52fef29a7e5c102d76709139790 utilities/logging.py
239
240
  91d04debaa395607f66912bbf108371543dd38703c8fc15ffaa8bfea0d8b8344 utilities/mcp_server_config/__init__.py
@@ -254,7 +255,7 @@ c833f7723b65b8bf55695ab67261860ce5b21532dc6d6a3c6e887cc12e35ab83 utilities/open
254
255
  8521f1f6091a8cef4154db5342c017fafaf48876869153380b86f7eb741ffa8b utilities/openapi/json_schema_converter.py
255
256
  6d833c04a3bc731a66258221e5f15826a41e265e9c80898218ae226e29f4d612 utilities/openapi/models.py
256
257
  2e58bc03dd82687ef7a843474eb65c1f644eafe2c039eb0949a61cce8b313de9 utilities/openapi/parser.py
257
- 1db004cc712839ebdb920e7017776c743e8cd3a3e999b7fe13132d68da4a099c utilities/openapi/schemas.py
258
+ a3a027b8cf02e7041865b3a5d4c511f7e5b72af88df109c6b8e4f0c898b3e0a1 utilities/openapi/schemas.py
258
259
  9db69a1b408230d652ec39d89867449d504491aeda59fbc7285a14210575b7e3 utilities/pagination.py
259
260
  634850f693e36fc0e5c877581bdb7e990bfd7541676288170c6a1d1713755d46 utilities/prefab.py
260
261
  3db58fb4f30afb73083baeb8d94c9a23d9875980f091c19592b9eff89588764c utilities/skills.py
@@ -262,7 +263,7 @@ c833f7723b65b8bf55695ab67261860ce5b21532dc6d6a3c6e887cc12e35ab83 utilities/open
262
263
  63e6d25c67609e194c5e940602ccf0562ac1617ab33e6f5b5b05a55bfca9c31c utilities/tests.py
263
264
  6e158212fb4a31e14b309c7c65aefee8861ac62f8edb2ee06ba359e37df92c37 utilities/timeout.py
264
265
  0b105f303612c242d5be4569b185a3e9780b9749f693ba5392ebad223b5aa0d6 utilities/token_cache.py
265
- a1ac7acb1d21720d6e2dc9094558d3ada8a50f8580154c2bf102154c62a29d5f utilities/types.py
266
+ aa8d018a5c09f3322184688b4626b3a72dbc1da4b17f64e6bc638a1ae2c71cdf utilities/types.py
266
267
  81c9e16bb563e31101c5dad2f3711994aa4dff8dc0433720899144be44eacea8 utilities/ui.py
267
268
  3ec3a6eeda40bce166793f27a109c8f132b29b4125f781cfc2de220c22568b6a utilities/version_check.py
268
269
  5e19b700a340ef7fd8974571de2aa190ef1acfc609547aaa1729704bfc241ae2 utilities/versions.py
@@ -1,2 +1,2 @@
1
- fastmcp-slim==4.0.5
1
+ fastmcp-slim==4.0.10
2
2
  Vendored by scripts/vendor_fastmcp.py — do not edit by hand.
@@ -32,7 +32,7 @@ from ha_mcp._vendor.fastmcp import _compat
32
32
 
33
33
  _compat.install()
34
34
 
35
- __version__ = "4.0.5"
35
+ __version__ = "4.0.10"
36
36
 
37
37
  if settings.deprecation_warnings:
38
38
  warnings.simplefilter("default", FastMCPDeprecationWarning)
@@ -580,6 +580,8 @@ class Client(
580
580
  # Normally disconnects complete in <100ms; this is a safety net for
581
581
  # unresponsive servers.
582
582
  self._disconnect_timeout: float = fastmcp.settings.client_disconnect_timeout
583
+ # Session stops handed off by exiting contexts; referenced until done.
584
+ self._stoppers: set[asyncio.Task[None]] = set()
583
585
 
584
586
  # Session context management - see class docstring for detailed explanation
585
587
  self._session_state = ClientSessionState()
@@ -1063,39 +1065,67 @@ class Client(
1063
1065
  that was resetting events outside the lock, causing race conditions.
1064
1066
  Event recreation now happens only in _connect() when actually needed.
1065
1067
  """
1068
+ if force:
1069
+ # An explicit close stops the session it finds, in order with the
1070
+ # contexts around it, so it runs here under the lock as before.
1071
+ await self._stop_session(None, force=True)
1072
+ return
1073
+
1074
+ # Release this context's hold before any await. A context that exits
1075
+ # because it was cancelled can be interrupted at every await below, by
1076
+ # an enclosing anyio scope or by a native cancellation that repeats
1077
+ # while it unwinds (as when a caller runs each tool call in its own
1078
+ # task). A hold that is never released keeps the client connected for
1079
+ # good, so a nested exit finishes here without awaiting at all.
1080
+ self._session_state.nesting_counter = max(
1081
+ 0, self._session_state.nesting_counter - 1
1082
+ )
1083
+ if self._session_state.nesting_counter > 0:
1084
+ return
1085
+
1086
+ held = self._session_state.session_task
1087
+ if held is None:
1088
+ return
1089
+ # Stop the session in its own task. The exiting context never waits on
1090
+ # the session lock itself, since another task can hold it through a
1091
+ # reconnect that is slow or never finishes: a cancelled exit returns at
1092
+ # once through the shield, and the stop still runs to completion.
1093
+ stopper = asyncio.create_task(self._stop_session(held, force=False))
1094
+ self._stoppers.add(stopper)
1095
+ stopper.add_done_callback(self._stoppers.discard)
1096
+ await asyncio.shield(stopper)
1097
+
1098
+ async def _stop_session(
1099
+ self, held: asyncio.Task[Any] | None, *, force: bool
1100
+ ) -> None:
1101
+ """Stop the session. A last exit passes the session it held, and the stop is
1102
+ skipped if another context now uses it; a forced stop takes whatever is current."""
1066
1103
  # ensure only one session is running at a time to avoid race conditions
1067
1104
  async with self._session_state.lock:
1068
- # if we are forcing a disconnect, reset the nesting counter
1069
1105
  if force:
1070
1106
  self._session_state.nesting_counter = 0
1071
-
1072
- # otherwise decrement to check if we are done nesting
1073
- else:
1074
- self._session_state.nesting_counter = max(
1075
- 0, self._session_state.nesting_counter - 1
1076
- )
1077
-
1078
- # if we are still nested, return
1079
- if self._session_state.nesting_counter > 0:
1107
+ session_task = self._session_state.session_task
1108
+ elif (
1109
+ self._session_state.session_task is not held
1110
+ or self._session_state.nesting_counter > 0
1111
+ ):
1112
+ # Stopped already, or another context connected while we waited.
1080
1113
  return
1081
-
1082
- # stop the active session
1083
- if self._session_state.session_task is None:
1114
+ else:
1115
+ session_task = held
1116
+ if session_task is None:
1084
1117
  return
1085
- session_task = self._session_state.session_task
1086
1118
  self._session_state.stop_event.set()
1087
1119
  # Wait (bounded) for the runner to unwind gracefully. If it
1088
1120
  # overruns — e.g. the transport's termination POST is blocked on
1089
1121
  # a stale HTTP keep-alive connection — cancel the background
1090
1122
  # task so transport resources (httpx connections, subprocess
1091
1123
  # pipes) are actually released instead of leaking into the
1092
- # event loop. Force paths additionally shield the wait so an
1093
- # outer cancellation can't abandon cleanup half-done.
1124
+ # event loop.
1094
1125
  try:
1095
- with anyio.CancelScope(shield=force):
1096
- with anyio.move_on_after(self._disconnect_timeout):
1097
- with suppress(asyncio.CancelledError):
1098
- await session_task
1126
+ with anyio.move_on_after(self._disconnect_timeout):
1127
+ with suppress(asyncio.CancelledError):
1128
+ await session_task
1099
1129
  finally:
1100
1130
  if not session_task.done():
1101
1131
  session_task.cancel()
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import asyncio
5
6
  import contextlib
6
7
  import datetime
7
8
  from collections.abc import Mapping
@@ -53,6 +54,8 @@ class ClientGroup:
53
54
  self._tool_routes: dict[str, ToolRoute] = {}
54
55
  self._catalog_loaded = False
55
56
  self._route_lock = anyio.Lock()
57
+ # Member closes handed off by exiting contexts; referenced until done.
58
+ self._closers: set[asyncio.Task[bool | None]] = set()
56
59
 
57
60
  @property
58
61
  def clients(self) -> Mapping[str, Client[Any]]:
@@ -130,19 +133,38 @@ class ClientGroup:
130
133
  exc_type: type[BaseException] | None,
131
134
  exc_value: BaseException | None,
132
135
  traceback: TracebackType | None,
136
+ ) -> bool | None:
137
+ # Release this context's hold before any await, as Client does: a context
138
+ # exited by cancellation can be interrupted at every await, and a hold
139
+ # that is never released keeps every member connected for good.
140
+ self._nesting_counter = max(0, self._nesting_counter - 1)
141
+ held = self._exit_stack
142
+ if self._nesting_counter > 0 or held is None:
143
+ return None
144
+ # Close the members in their own task, so a cancelled exit returns at
145
+ # once instead of waiting on the lifecycle lock, and the close still runs.
146
+ closer = asyncio.create_task(
147
+ self._close_members(held, exc_type, exc_value, traceback)
148
+ )
149
+ self._closers.add(closer)
150
+ closer.add_done_callback(self._closers.discard)
151
+ return await asyncio.shield(closer)
152
+
153
+ async def _close_members(
154
+ self,
155
+ held: contextlib.AsyncExitStack,
156
+ exc_type: type[BaseException] | None,
157
+ exc_value: BaseException | None,
158
+ traceback: TracebackType | None,
133
159
  ) -> bool | None:
134
160
  async with self._lifecycle_lock:
135
- self._nesting_counter = max(0, self._nesting_counter - 1)
136
- if self._nesting_counter > 0:
161
+ if self._exit_stack is not held or self._nesting_counter > 0:
162
+ # Closed already, or another context entered while we waited.
137
163
  return None
138
-
139
- stack = self._exit_stack
140
164
  self._exit_stack = None
141
165
  self._tool_routes.clear()
142
166
  self._catalog_loaded = False
143
- if stack is not None:
144
- return await stack.__aexit__(exc_type, exc_value, traceback)
145
- return None
167
+ return await held.__aexit__(exc_type, exc_value, traceback)
146
168
 
147
169
  def _require_connected(self) -> None:
148
170
  disconnected = [
@@ -220,8 +220,13 @@ class StdioTransport(ClientTransport):
220
220
 
221
221
  def __del__(self):
222
222
  """Ensure that we send a disconnection signal to the transport task if we are being garbage collected."""
223
- if not self._stop_event.is_set():
224
- self._stop_event.set()
223
+ # Subclasses validate the command before calling super().__init__, so an
224
+ # object whose construction raised has no `_stop_event`. Guard instead of
225
+ # letting the interpreter print "Exception ignored in: __del__" over the
226
+ # error the caller is actually meant to see.
227
+ stop_event = getattr(self, "_stop_event", None)
228
+ if stop_event is not None and not stop_event.is_set():
229
+ stop_event.set()
225
230
 
226
231
  def __repr__(self) -> str:
227
232
  return (
@@ -10,8 +10,9 @@ if TYPE_CHECKING:
10
10
  import anyio
11
11
  from ha_mcp._vendor.mcp_types import TextContent
12
12
  from pydantic import Field
13
+ from pydantic import ValidationError as PydanticValidationError
13
14
 
14
- from ha_mcp._vendor.fastmcp.exceptions import NotFoundError, ToolError
15
+ from ha_mcp._vendor.fastmcp.exceptions import NotFoundError, ToolError, ValidationError
15
16
  from ha_mcp._vendor.fastmcp.server.context import Context
16
17
  from ha_mcp._vendor.fastmcp.server.transforms import GetToolNext
17
18
  from ha_mcp._vendor.fastmcp.server.transforms.catalog import CatalogTransform
@@ -52,6 +53,64 @@ def _ensure_async(fn: Callable[..., Any]) -> Callable[..., Any]:
52
53
  return wrapper
53
54
 
54
55
 
56
+ _VALIDATION_ERROR_MARKERS = (
57
+ "validation error for",
58
+ "unexpected keyword argument",
59
+ "missing required argument",
60
+ )
61
+
62
+
63
+ def _legible_call_error(
64
+ tool_name: str, tool: Tool, error: dict[str, Any] | str | Exception
65
+ ) -> str:
66
+ """Rewrite a failed call's error for the model that wrote the code.
67
+
68
+ A failed `call_tool` raises so the failure interrupts the chain instead of
69
+ flowing onward as a return value. Validation failures get the tool's
70
+ parameter list appended — the error names what was wrong, the schema names
71
+ what would be right — and always speak in the name the caller used, not
72
+ the backend's internal identity.
73
+ """
74
+ validation = isinstance(error, ValidationError)
75
+ if validation and isinstance(error.__cause__, PydanticValidationError):
76
+ text = "; ".join(
77
+ f"{'.'.join(str(part) for part in item['loc']) or 'arguments'}: {item['msg']}"
78
+ for item in error.__cause__.errors(include_url=False)
79
+ )
80
+ else:
81
+ text = json.dumps(error) if isinstance(error, dict) else str(error)
82
+ message = f"call_tool({tool_name!r}) failed: {text}"
83
+ if validation or any(
84
+ marker in text.lower() for marker in _VALIDATION_ERROR_MARKERS
85
+ ):
86
+ properties = (tool.parameters or {}).get("properties")
87
+ if isinstance(properties, dict) and properties:
88
+ required = set((tool.parameters or {}).get("required") or [])
89
+ params = ", ".join(
90
+ name + ("*" if name in required else "") for name in properties
91
+ )
92
+ message += f"\nValid parameters for {tool_name} (* = required): {params}"
93
+ return message
94
+
95
+
96
+ def _error_detail(result: ToolResult) -> dict[str, Any] | str:
97
+ """What an `is_error` result tells the model: text, else structured, else generic.
98
+
99
+ Non-text blocks are never stringified; an image's base64 payload would
100
+ swamp the model's context without explaining the failure.
101
+ """
102
+ text = "\n".join(
103
+ item.text
104
+ for item in result.content
105
+ if isinstance(item, TextContent) and item.text
106
+ )
107
+ if text:
108
+ return text
109
+ if result.structured_content is not None:
110
+ return result.structured_content
111
+ return "tool returned an error"
112
+
113
+
55
114
  def _unwrap_tool_result(result: ToolResult) -> dict[str, Any] | str:
56
115
  """Convert a ToolResult for use in the sandbox.
57
116
 
@@ -257,7 +316,7 @@ ToolDetailLevel = Literal["brief", "detailed", "full"]
257
316
  """Detail level for discovery tool output.
258
317
 
259
318
  - ``"brief"``: tool names and one-line descriptions
260
- - ``"detailed"``: compact markdown with parameter names, types, and required markers
319
+ - ``"detailed"``: compact markdown with parameter names, types, literal values, defaults, and required markers
261
320
  - ``"full"``: complete JSON schema
262
321
  """
263
322
 
@@ -670,7 +729,14 @@ class CodeMode(CatalogTransform):
670
729
  if tool is None:
671
730
  raise NotFoundError(f"Unknown tool: {tool_name}")
672
731
 
673
- result = await ctx.fastmcp.call_tool(tool.name, params)
732
+ try:
733
+ result = await ctx.fastmcp.call_tool(tool.name, params)
734
+ except (ToolError, ValidationError) as exc:
735
+ raise ToolError(_legible_call_error(tool_name, tool, exc)) from exc
736
+ if result.is_error:
737
+ raise ToolError(
738
+ _legible_call_error(tool_name, tool, _error_detail(result))
739
+ )
674
740
  return _unwrap_tool_result(result)
675
741
 
676
742
  return await transform.sandbox_provider.run(