ha-mcp-dev 9.0.0.dev3101__tar.gz → 9.0.0.dev3108__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 (796) hide show
  1. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/PKG-INFO +1 -1
  2. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/pyproject.toml +2 -1
  3. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/pyproject.toml.orig +2 -1
  4. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/az.json +11 -0
  5. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/cs.json +11 -0
  6. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/de.json +11 -0
  7. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/eo.json +11 -0
  8. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/es.json +11 -0
  9. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/fr.json +11 -0
  10. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/it.json +11 -0
  11. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/ko.json +11 -0
  12. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/nl.json +11 -0
  13. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/pl.json +11 -0
  14. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/ru.json +11 -0
  15. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/sv.json +11 -0
  16. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/zh-Hans.json +11 -0
  17. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/zh-Hant.json +11 -0
  18. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/component_api.py +64 -0
  19. ha_mcp_dev-9.0.0.dev3108/src/ha_mcp/tools/server_version.py +77 -0
  20. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_bug_report.py +32 -50
  21. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_dev.py +4 -5
  22. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/LICENSE +0 -0
  23. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/README.md +0 -0
  24. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/__init__.py +0 -0
  25. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/__main__.py +0 -0
  26. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_pypi_marker +0 -0
  27. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_rich_compat.py +0 -0
  28. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/__init__.py +0 -0
  29. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  30. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  31. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  32. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  33. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  34. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  35. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  36. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  37. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  38. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  39. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  40. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  41. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  42. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  43. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  44. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  45. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  46. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  47. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  48. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev_security.py +0 -0
  49. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  50. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  51. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  52. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  53. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  54. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  55. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  56. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  57. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  58. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  59. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  60. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  61. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  62. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  63. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  64. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  65. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  66. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  67. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  68. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  69. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  70. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  71. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  72. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  73. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  74. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  75. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  76. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  77. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  78. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  79. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  80. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  81. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  82. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  83. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  84. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  85. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  86. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  87. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  88. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  89. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  90. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  91. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  92. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  93. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  94. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  95. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  96. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  97. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  98. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  99. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  100. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  101. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  102. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  103. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  104. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  105. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  106. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  107. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  108. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  109. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  110. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  111. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  112. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  113. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  114. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  115. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  116. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  117. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  118. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  119. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  120. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  121. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  122. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  123. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  124. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  125. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  126. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  127. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +0 -0
  128. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  129. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  130. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  131. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  132. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  133. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  134. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  135. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  136. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  137. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  138. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  139. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  140. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  141. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  142. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  143. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  144. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  145. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  146. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  147. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  148. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  149. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  150. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  151. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  152. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  153. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  154. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  155. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  156. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  157. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  158. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  159. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  160. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  161. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  162. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  163. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  164. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  165. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  166. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  167. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  168. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  169. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  170. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  171. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  172. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  173. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  174. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  175. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  176. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  177. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  178. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  179. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  180. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  181. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  182. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  183. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  184. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  185. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  186. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  187. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  188. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  189. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  190. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  191. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  192. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  193. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  194. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  195. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  196. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  197. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  198. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  199. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  200. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/mixins/extensions.py +0 -0
  201. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  202. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  203. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  204. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  205. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  206. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  207. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  208. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  209. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  210. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  211. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  212. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  213. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  214. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  215. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  216. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  217. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  218. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  219. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  220. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  221. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  222. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  223. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  224. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  225. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  226. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  227. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  228. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  229. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  230. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  231. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  232. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  233. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  234. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  235. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  236. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  237. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  238. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  239. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  240. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  241. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  242. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  243. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  244. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  245. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  246. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  247. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  248. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  249. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  250. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  251. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  252. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  253. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  254. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  255. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  256. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  257. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  258. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  259. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  260. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  261. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  262. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  263. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  264. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  265. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  266. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  267. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  268. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  269. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  270. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  271. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  272. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  273. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  274. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  275. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  276. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  277. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  278. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  279. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  280. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  281. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  282. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  283. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  284. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  285. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  286. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  287. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  288. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  289. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  290. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  291. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  292. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  293. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  294. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  295. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  296. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  297. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  298. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  299. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  300. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  301. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  302. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  303. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  304. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  305. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  306. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  307. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  308. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  309. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  310. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  311. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  312. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  313. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  314. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  315. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  316. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  317. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  318. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  319. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  320. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  321. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  322. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  323. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  324. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  325. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  326. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  327. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  328. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  329. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  330. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  331. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  332. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  333. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  334. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  335. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  336. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  337. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  338. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  339. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  340. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  341. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  342. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  343. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  344. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  345. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  346. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  347. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  348. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  349. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  350. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  351. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  352. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  353. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  354. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  355. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  356. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  357. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  358. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  359. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  360. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  361. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  362. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  363. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  364. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  365. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  366. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  367. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  368. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  369. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  370. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  371. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  372. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  373. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  374. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  375. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  376. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  377. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  378. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  379. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  380. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  381. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  382. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  383. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  384. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  385. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  386. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  387. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  388. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  389. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  390. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  391. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  392. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  393. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  394. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  395. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  396. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  397. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  398. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  399. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  400. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  401. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  402. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  403. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  404. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  405. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  406. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/_request_clock.py +0 -0
  407. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  408. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  409. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  410. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  411. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  412. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  413. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  414. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  415. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  416. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  417. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  418. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  419. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  420. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  421. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  422. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  423. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  424. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  425. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  426. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  427. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  428. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  429. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  430. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  431. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  432. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  433. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  434. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  435. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  436. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  437. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  438. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  439. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  440. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  441. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  442. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  443. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/requirements.txt +0 -0
  444. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  445. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  446. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  447. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  448. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  449. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  450. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  451. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  452. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  453. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  454. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  455. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  456. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  457. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  458. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  459. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  460. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  461. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  462. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  463. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  464. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  465. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  466. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  467. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  468. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  469. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  470. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  471. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  472. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  473. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  474. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  475. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  476. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  477. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  478. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  479. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  480. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  481. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  482. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  483. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  484. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  485. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  486. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  487. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  488. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  489. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  490. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  491. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  492. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  493. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  494. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  495. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  496. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  497. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  498. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  499. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  500. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/_version.py +0 -0
  501. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/app_discovery.py +0 -0
  502. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/auth/__init__.py +0 -0
  503. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/auth/consent_form.py +0 -0
  504. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/auth/oidc_compat.py +0 -0
  505. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/auth/provider.py +0 -0
  506. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/backup_dashboards.py +0 -0
  507. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/backup_diff.py +0 -0
  508. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/backup_entity_ids.py +0 -0
  509. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/backup_helper_target.py +0 -0
  510. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/backup_integrations.py +0 -0
  511. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/backup_manager.py +0 -0
  512. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/backup_tags.py +0 -0
  513. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/backup_zones.py +0 -0
  514. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/browser_landing.py +0 -0
  515. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/client/__init__.py +0 -0
  516. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/client/admin_routes.py +0 -0
  517. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/client/models.py +0 -0
  518. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/client/rest_client.py +0 -0
  519. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/client/supervisor_client.py +0 -0
  520. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/client/websocket_client.py +0 -0
  521. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/client/websocket_listener.py +0 -0
  522. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/config.py +0 -0
  523. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/config_backup.py +0 -0
  524. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/config_meta.py +0 -0
  525. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/config_overrides.py +0 -0
  526. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/config_registry.py +0 -0
  527. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/config_settings.py +0 -0
  528. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  529. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  530. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  531. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  532. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  533. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  534. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/errors.py +0 -0
  535. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/ha_request_queue.py +0 -0
  536. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  537. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/http_transport.py +0 -0
  538. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/image_info.py +0 -0
  539. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/llm_exposure.py +0 -0
  540. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/log_filters.py +0 -0
  541. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/policy/__init__.py +0 -0
  542. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/policy/approval_queue.py +0 -0
  543. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/policy/decision_pin.py +0 -0
  544. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/policy/decisions.py +0 -0
  545. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/policy/editing.py +0 -0
  546. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/policy/evaluator.py +0 -0
  547. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/policy/events.py +0 -0
  548. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/policy/handlers.py +0 -0
  549. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/policy/middleware.py +0 -0
  550. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/policy/model.py +0 -0
  551. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/policy/mrtr.py +0 -0
  552. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/policy/persistence.py +0 -0
  553. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/policy/server_channels.py +0 -0
  554. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/policy/value_sources.py +0 -0
  555. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/py.typed +0 -0
  556. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/read_only.py +0 -0
  557. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/redaction.py +0 -0
  558. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/renamed_tools.py +0 -0
  559. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  560. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  561. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  562. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
  563. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  564. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  565. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  566. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  567. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  568. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  569. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  570. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  571. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  572. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  573. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  574. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
  575. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  576. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/server.py +0 -0
  577. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/server_instructions.py +0 -0
  578. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/server_lifespan.py +0 -0
  579. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/server_tool_text.py +0 -0
  580. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/__init__.py +0 -0
  581. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  582. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  583. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  584. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/_handlers_oauth_callbacks.py +0 -0
  585. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  586. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  587. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  588. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  589. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  590. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  591. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  592. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/_theme.py +0 -0
  593. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  594. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  595. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  596. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  597. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/settings.css +0 -0
  598. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/settings.html +0 -0
  599. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
  600. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
  601. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
  602. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
  603. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
  604. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
  605. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
  606. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
  607. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
  608. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/settings_ui/settings_js/10_oauth_callbacks.js +0 -0
  609. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/smoke_test.py +0 -0
  610. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  611. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/strict_bps.py +0 -0
  612. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tool_dispatch.py +0 -0
  613. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/__init__.py +0 -0
  614. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/area_messages.py +0 -0
  615. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/auto_backup.py +0 -0
  616. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/backup.py +0 -0
  617. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/backup_access.py +0 -0
  618. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/backup_on_demand.py +0 -0
  619. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  620. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/best_practice_result.py +0 -0
  621. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  622. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  623. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  624. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/blueprint_write.py +0 -0
  625. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/bug_report_config.py +0 -0
  626. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/bug_report_templates.py +0 -0
  627. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/bulk_selector.py +0 -0
  628. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/coercion.py +0 -0
  629. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/component_config_entries.py +0 -0
  630. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/component_config_reads.py +0 -0
  631. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  632. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/component_devices.py +0 -0
  633. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/component_helper_collections.py +0 -0
  634. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/component_registries.py +0 -0
  635. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  636. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_entry_backup.py +0 -0
  637. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  638. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  639. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
  640. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  641. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  642. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  643. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
  644. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  645. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
  646. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
  647. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_helpers/create.py +0 -0
  648. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
  649. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
  650. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_helpers/icon_route.py +0 -0
  651. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
  652. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
  653. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
  654. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
  655. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_helpers/update.py +0 -0
  656. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
  657. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
  658. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_write_errors.py +0 -0
  659. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/config_write_helpers.py +0 -0
  660. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/core_contract.py +0 -0
  661. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/dashboard_card_describe.py +0 -0
  662. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  663. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
  664. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/dev_backup.py +0 -0
  665. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/device_control.py +0 -0
  666. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/device_enrichment.py +0 -0
  667. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
  668. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/energy_preferences.py +0 -0
  669. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
  670. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/entity_registration.py +0 -0
  671. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/entity_removal.py +0 -0
  672. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/entity_update_fields.py +0 -0
  673. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  674. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/flow_helper_lookup.py +0 -0
  675. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/hacs_registration.py +0 -0
  676. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/helper_flows.py +0 -0
  677. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/helpers.py +0 -0
  678. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/history_response.py +0 -0
  679. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/integration_entry_state.py +0 -0
  680. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
  681. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/log_common.py +0 -0
  682. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/log_sources.py +0 -0
  683. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  684. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/log_sources_logbook.py +0 -0
  685. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  686. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/radio/__init__.py +0 -0
  687. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/radio/base.py +0 -0
  688. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/radio/matter.py +0 -0
  689. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/radio/thread.py +0 -0
  690. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  691. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/radio/zwave.py +0 -0
  692. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
  693. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/recorder_errors.py +0 -0
  694. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/reference_validator.py +0 -0
  695. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/registry.py +0 -0
  696. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  697. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/response_helpers.py +0 -0
  698. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/scene_discovery.py +0 -0
  699. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/search/__init__.py +0 -0
  700. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/search/base.py +0 -0
  701. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/search/component.py +0 -0
  702. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/search/entities.py +0 -0
  703. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/search/legacy.py +0 -0
  704. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/search/modes.py +0 -0
  705. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/search/overview.py +0 -0
  706. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/search/response.py +0 -0
  707. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/search/state.py +0 -0
  708. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  709. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  710. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  711. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  712. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  713. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  714. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  715. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  716. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  717. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  718. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/statistics_calendar.py +0 -0
  719. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/statistics_helpers.py +0 -0
  720. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/statistics_resets.py +0 -0
  721. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/system_restart.py +0 -0
  722. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tool_hints.py +0 -0
  723. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  724. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_addons.py +0 -0
  725. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_areas.py +0 -0
  726. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  727. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  728. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_calendar.py +0 -0
  729. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_camera.py +0 -0
  730. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_categories.py +0 -0
  731. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_code.py +0 -0
  732. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  733. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  734. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  735. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  736. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  737. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  738. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_energy.py +0 -0
  739. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_entities.py +0 -0
  740. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  741. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_groups.py +0 -0
  742. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_hacs.py +0 -0
  743. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_history.py +0 -0
  744. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_integrations.py +0 -0
  745. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_labels.py +0 -0
  746. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_logs.py +0 -0
  747. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_radio.py +0 -0
  748. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_registry.py +0 -0
  749. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_resources.py +0 -0
  750. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_search.py +0 -0
  751. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  752. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_service.py +0 -0
  753. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_services.py +0 -0
  754. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_system.py +0 -0
  755. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_themes.py +0 -0
  756. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_todo.py +0 -0
  757. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_traces.py +0 -0
  758. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_updates.py +0 -0
  759. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_utility.py +0 -0
  760. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  761. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  762. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  763. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/tools_zones.py +0 -0
  764. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/util_helpers.py +0 -0
  765. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/validation_middleware.py +0 -0
  766. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/tools/ws_waiters.py +0 -0
  767. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/transforms/__init__.py +0 -0
  768. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/transforms/categorized_search.py +0 -0
  769. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/transforms/compact_params.py +0 -0
  770. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/transforms/component_helpers.py +0 -0
  771. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/transforms/component_search.py +0 -0
  772. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  773. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  774. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/transport_security.py +0 -0
  775. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/update_check.py +0 -0
  776. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/__init__.py +0 -0
  777. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/config_hash.py +0 -0
  778. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/config_write_lock.py +0 -0
  779. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  780. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/data_paths.py +0 -0
  781. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  782. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/domain_handlers.py +0 -0
  783. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/entity_membership.py +0 -0
  784. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  785. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  786. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  787. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/operation_manager.py +0 -0
  788. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/python_sandbox.py +0 -0
  789. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  790. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/skill_loader.py +0 -0
  791. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/utils/usage_logger.py +0 -0
  792. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/visibility/__init__.py +0 -0
  793. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/visibility/enforcement.py +0 -0
  794. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/visibility/model.py +0 -0
  795. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/visibility/persistence.py +0 -0
  796. {ha_mcp_dev-9.0.0.dev3101 → ha_mcp_dev-9.0.0.dev3108}/src/ha_mcp/visibility/resolver.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 9.0.0.dev3101
3
+ Version: 9.0.0.dev3108
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Keywords: mcp,home-assistant,ai,automation,smart-home
6
6
  Author: Julien
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.0.0.dev3101"
7
+ version = "9.0.0.dev3108"
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"
@@ -253,6 +253,7 @@ markers = [
253
253
  "not_on_haos_embedded: skip on the haos_embedded backend (HAOS_TEST_MODE=embedded) - provably redundant with the lane's own session backend, which enables the entry once and drives the in-process server for the whole suite; #1527",
254
254
  "requires_tools_entry: needs the File & YAML Tools config entry - skipped on E2E_NO_TOOLS_ENTRY=1 lanes (#2292)",
255
255
  "no_tools_only: runs only on E2E_NO_TOOLS_ENTRY=1 lanes (#2292)",
256
+ "requires_component_surface: needs an active ha_mcp_tools config entry - skipped on the no-tools lanes without an active server entry (plain container, HAOS inaddon, where it is absent or disabled); #2584",
256
257
  ]
257
258
  asyncio_mode = "auto"
258
259
  asyncio_default_fixture_loop_scope = "session"
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.0.0.dev3101"
7
+ version = "9.0.0.dev3108"
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
@@ -328,6 +328,7 @@ markers = [
328
328
  "not_on_haos_embedded: skip on the haos_embedded backend (HAOS_TEST_MODE=embedded) - provably redundant with the lane's own session backend, which enables the entry once and drives the in-process server for the whole suite; #1527",
329
329
  "requires_tools_entry: needs the File & YAML Tools config entry - skipped on E2E_NO_TOOLS_ENTRY=1 lanes (#2292)",
330
330
  "no_tools_only: runs only on E2E_NO_TOOLS_ENTRY=1 lanes (#2292)",
331
+ "requires_component_surface: needs an active ha_mcp_tools config entry - skipped on the no-tools lanes without an active server entry (plain container, HAOS inaddon, where it is absent or disabled); #2584",
331
332
  ]
332
333
 
333
334
  # Async support - session-scoped loop lets session-scoped fixtures
@@ -47,6 +47,7 @@
47
47
  "server.sections.sidecar": "Parametrlər interfeysinin köməkçi prosesi",
48
48
  "server.sections.beta": "Beta funksiyalar (təhlükəli)",
49
49
  "server.sections.developer": "Tərtibatçı",
50
+ "server.sections.remote_access": "Uzaqdan giriş",
50
51
  "server.sidecar.disable": "Parametrlər serverini həmişəlik söndür",
51
52
  "server.sidecar.disable_title": "Parametrlər interfeysini həmişəlik söndürür: bu serveri dayandırır VƏ ~/.ha-mcp/settings_ui_disabled faylını yaradır ki, gələcəkdə ha-mcp işə salınanda yenidən başlamasın. Yenidən aktivləşdirmək üçün həmin faylı silin.",
52
53
  "backups.loading": "Ehtiyat nüsxələrin vəziyyəti yüklənir…",
@@ -329,6 +330,16 @@
329
330
  "filesystem.custom.unavailable": "Fərdi yollar hazırda əlçatan deyil.",
330
331
  "filesystem.custom.save": "Yolları yadda saxla",
331
332
  "filesystem.custom.saved_rejected": "Yadda saxlanıldı. Rədd edilənlər (bloklanmış və ya etibarsız): {paths}",
333
+ "oauth_callbacks.title": "İcazə verilən OAuth geriyə çağırış (callback) URL-ləri",
334
+ "oauth_callbacks.help": "Doğrulama rejimi gizli veb-qarmaq (webhook) URL-i olduğu müddətdə, OAuth ilə daxil olan müştəri yalnız bu siyahıdakı geriyə çağırış URL-nə yönləndirilir; digər istənilən geriyə çağırış onun necə əlavə ediləcəyini izah edən səhifə ilə rədd edilir. Hər sətirə bir URL olmaqla, müştərinin göndərdiyi kimi daxil edin. <code>http://</code> qaydabağlantı (loopback) geriyə çağırışı (127.0.0.1, [::1] və ya localhost) həm də istənilən portda uyğun gəlir. Yalnız veb-qarmaq URL-i ilə qoşulan müştərilər üçün giriş tələb olunmur. Dəyişikliklөр yenidən başladılmadan növbəti girişə tətbiq edilir.",
335
+ "oauth_callbacks.default": "İlkin siyahı: {urls}",
336
+ "oauth_callbacks.inactive": "Hazırda istifadədə deyil: siyahı yalnız uzaqdan giriş aktiv olduqda və Doğrulama rejimi gizli veb-qarmaq URL-i olduqda tətbiq edilir.",
337
+ "oauth_callbacks.save": "Geriyə çağırışları saxla",
338
+ "oauth_callbacks.reset": "İlkin vəziyyəti bərpa et",
339
+ "oauth_callbacks.invalid": "Saxlanılmadı. Bunlar istifadəyə yararlı geriyə çağırış URL-ləri deyil: {urls}. İstifadəçi adı, parol və ya #fragment olmadan https://, yaxud 127.0.0.1, [::1] və ya localhost üzərində http:// istifadə edin.",
340
+ "oauth_callbacks.saved": "Saxlandı. Növbəti girişə tətbiq olunur.",
341
+ "oauth_callbacks.load_failed": "Geriyə çağırış siyahısını yükləmək mümkün olmadı (HTTP {status}). Yenidən cəhd etmək üçün səhifəni yeniləyin.",
342
+ "oauth_callbacks.load_error": "Geriyə çağırış siyahısını yükləmək mümkün olmadı: sorğu uğursuz oldu. Yenidən cəhd etmək üçün səhifəni yeniləyin.",
332
343
  "origins.env_locked": "Mühit dəyişəni vasitəsilə təyin edilib; burada redaktə etmək üçün həmin təyinatı ləğv edin.",
333
344
  "origins.addon_synced": "Tətbiqin (əlavənin) Konfiqurasiya vərəqi ilə sinxronlaşdırılıb. Yadda saxladıqdan sonra yenidən başlatmaq tələb olunur.",
334
345
  "origins.env_var_unset": "{variable} mühit dəyişəni vasitəsilə təyin edilib; burada redaktə etmək üçün həmin təyinatı ləğv edin.",
@@ -47,6 +47,7 @@
47
47
  "server.sections.sidecar": "Doprovodné uživatelské rozhraní nastavení",
48
48
  "server.sections.beta": "Beta funkce (nebezpečné)",
49
49
  "server.sections.developer": "Vývojář",
50
+ "server.sections.remote_access": "Vzdálený přístup",
50
51
  "server.sidecar.disable": "Trvale zakázat server nastavení",
51
52
  "server.sidecar.disable_title": "Trvale zakáže uživatelské rozhraní nastavení: zastaví tento server A zapíše ~/.ha-mcp/settings_ui_disabled, aby se nespustil při budoucích spuštěních ha-mcp. Pro opětovné povolení tento soubor smažte.",
52
53
  "backups.loading": "Načítání stavu zálohy…",
@@ -329,6 +330,16 @@
329
330
  "filesystem.custom.unavailable": "Vlastní cesty jsou aktuálně nedostupné.",
330
331
  "filesystem.custom.save": "Uložit cesty",
331
332
  "filesystem.custom.saved_rejected": "Uloženo. Zamítnuto (blokováno nebo neplatné): {paths}",
333
+ "oauth_callbacks.title": "Povolené adresy URL zpětného volání OAuth",
334
+ "oauth_callbacks.help": "Když je režim ověřování nastaven na tajnou adresu URL webhooku, klient, který se přihlásí pomocí OAuth, je přesměrován zpět pouze na adresu URL zpětného volání z tohoto seznamu; jakékoli jiné zpětné volání je odmítnuto se stránkou vysvětlující, jak jej přidat. Zadejte jednu adresu URL na řádek přesně tak, jak ji klient odesílá. Zpětné volání typu loopback s <code>http://</code> (127.0.0.1, [::1] nebo localhost) odpovídá také na libovolném portu. Klienti, kteří se připojují pouze pomocí adresy URL webhooku, nevyžadují žádný záznam. Změny se projeví při příštím přihlášení bez nutnosti restartu.",
335
+ "oauth_callbacks.default": "Výchozí seznam: {urls}",
336
+ "oauth_callbacks.inactive": "Právě se nepoužívá: seznam platí pouze v případě, že je zapnutý vzdálený přístup a režim ověřování je nastaven na tajnou adresu URL webhooku.",
337
+ "oauth_callbacks.save": "Uložit zpětná volání",
338
+ "oauth_callbacks.reset": "Obnovit výchozí",
339
+ "oauth_callbacks.invalid": "Neuloženo. Tyto adresy URL zpětného volání jsou nepoužitelné: {urls}. Použijte https:// nebo http:// na 127.0.0.1, [::1] či localhost, bez uživatelského jména, hesla nebo #fragmentu.",
340
+ "oauth_callbacks.saved": "Uloženo. Platí pro příští přihlášení.",
341
+ "oauth_callbacks.load_failed": "Seznam zpětných volání se nepodařilo načíst (HTTP {status}). Znovu načtěte stránku a zkuste to znovu.",
342
+ "oauth_callbacks.load_error": "Seznam zpětných volání se nepodařilo načíst: požadavek selhal. Znovu načtěte stránku a zkuste to znovu.",
332
343
  "origins.env_locked": "Nastaveno přes proměnnou prostředí; zrušte ji pro úpravy zde.",
333
344
  "origins.addon_synced": "Synchronizováno s kartou Konfigurace aplikace (doplňku). Po uložení je vyžadován restart.",
334
345
  "origins.env_var_unset": "Nastaveno přes proměnnou prostředí {variable}; zrušte ji pro úpravy zde.",
@@ -47,6 +47,7 @@
47
47
  "server.sections.sidecar": "Einstellungs-UI-Sidecar",
48
48
  "server.sections.beta": "Beta-Funktionen (gefährlich)",
49
49
  "server.sections.developer": "Entwickler",
50
+ "server.sections.remote_access": "Fernzugriff",
50
51
  "server.sidecar.disable": "Einstellungs-Server dauerhaft deaktivieren",
51
52
  "server.sidecar.disable_title": "Deaktiviert die Einstellungs-UI dauerhaft: stoppt diesen Server UND schreibt ~/.ha-mcp/settings_ui_disabled, sodass der Server bei zukünftigen ha-mcp-Starts nicht neu startet. Lösche diese Datei, um sie wieder zu aktivieren.",
52
53
  "backups.loading": "Lade Backup-Status…",
@@ -329,6 +330,16 @@
329
330
  "filesystem.custom.unavailable": "Benutzerdefinierte Pfade sind derzeit nicht verfügbar.",
330
331
  "filesystem.custom.save": "Pfade speichern",
331
332
  "filesystem.custom.saved_rejected": "Gespeichert. Abgelehnt (blockiert oder ungültig): {paths}",
333
+ "oauth_callbacks.title": "Erlaubte OAuth-Callback-URLs",
334
+ "oauth_callbacks.help": "Solange der Authentifizierungsmodus die geheime Webhook-URL ist, wird ein Client, der sich mit OAuth anmeldet, nur an eine Callback-URL auf dieser Liste zurückgeleitet; jeder andere Callback wird mit einer Seite abgelehnt, die erklärt, wie man ihn hinzufügt. Gib eine URL pro Zeile ein, exakt so, wie der Client sie sendet. Ein <code>http://</code>-Loopback-Callback (127.0.0.1, [::1] oder localhost) stimmt auch mit jedem Port überein. Clients, die sich nur mit der Webhook-URL verbinden, benötigen keinen Eintrag. Änderungen gelten für die nächste Anmeldung, ohne Neustart.",
335
+ "oauth_callbacks.default": "Standardliste: {urls}",
336
+ "oauth_callbacks.inactive": "Zurzeit nicht in Verwendung: Die Liste gilt nur, während der Fernzugriff aktiv ist und der Authentifizierungsmodus die geheime Webhook-URL ist.",
337
+ "oauth_callbacks.save": "Callbacks speichern",
338
+ "oauth_callbacks.reset": "Standard wiederherstellen",
339
+ "oauth_callbacks.invalid": "Nicht gespeichert. Dies sind keine verwendbaren Callback-URLs: {urls}. Verwende https:// oder http:// auf 127.0.0.1, [::1] oder localhost, ohne Benutzernamen, Passwort oder #fragment.",
340
+ "oauth_callbacks.saved": "Gespeichert. Gilt für die nächste Anmeldung.",
341
+ "oauth_callbacks.load_failed": "Die Callback-Liste konnte nicht geladen werden (HTTP {status}). Lade die Seite neu, um es erneut zu versuchen.",
342
+ "oauth_callbacks.load_error": "Die Callback-Liste konnte nicht geladen werden: Die Anfrage ist fehlgeschlagen. Lade die Seite neu, um es erneut zu versuchen.",
332
343
  "origins.env_locked": "Über Umgebungsvariable gesetzt; hebe sie auf, um hier zu bearbeiten.",
333
344
  "origins.addon_synced": "Mit dem Tab App-Konfiguration (Add-on) synchronisiert. Nach dem Speichern ist ein Neustart erforderlich.",
334
345
  "origins.env_var_unset": "Über Umgebungsvariable {variable} gesetzt; hebe sie auf, um hier zu bearbeiten.",
@@ -47,6 +47,7 @@
47
47
  "server.sections.sidecar": "Flankveturilo de Agorda UI",
48
48
  "server.sections.beta": "Beta-funkcioj (danĝeraj)",
49
49
  "server.sections.developer": "Programisto",
50
+ "server.sections.remote_access": "Forstira aliro",
50
51
  "server.sidecar.disable": "Konstante malŝalti agordan servilon",
51
52
  "server.sidecar.disable_title": "Konstante malŝaltas la agordan UI: haltigas ĉi tiun servilon KAJ skribas ~/.ha-mcp/settings_ui_disabled por ke ĝi ne reaperu ĉe estontaj lanĉoj de ha-mcp. Forigu tiun dosieron por re-ebligi.",
52
53
  "backups.loading": "Ŝarĝante sekurkopian staton…",
@@ -329,6 +330,16 @@
329
330
  "filesystem.custom.unavailable": "Propraj vojoj nuntempe ne disponeblas.",
330
331
  "filesystem.custom.save": "Konservi vojojn",
331
332
  "filesystem.custom.saved_rejected": "Konservita. Malakceptita (blokita aŭ nevalida): {paths}",
333
+ "oauth_callbacks.title": "Permesitaj OAuth-retrekomencaj URL-oj",
334
+ "oauth_callbacks.help": "Dum la Aŭtentiga reĝimo estas la sekreta retmesaĝa ligilo, kliento kiu ensalutas per OAuth estas sendita reen nur al retrekomenca URL en ĉi tiu listo; ĉiu alia retrekomenco estas rifuzita per paĝo klariganta kiel aldoni ĝin. Enigu unu URL-on po linio, ekzakte kiel la kliento sendas ĝin. <code>http://</code>-retslaŭba retrekomenco (127.0.0.1, [::1] aŭ localhost) ankaŭ kongruas je ĉiu pordo. Kliento kiu konektas per la retmesaĝa ligilo sola bezonas neniun eniron. Ŝanĝoj validas por la venonta ensaluto, sen restartigo.",
335
+ "oauth_callbacks.default": "Defaŭlta listo: {urls}",
336
+ "oauth_callbacks.inactive": "Ne uzata nun: la listo validas nur dum forstira aliro estas ŝaltita kaj Aŭtentiga reĝimo estas la sekreta retmesaĝa ligilo.",
337
+ "oauth_callbacks.save": "Konservi retrekomencojn",
338
+ "oauth_callbacks.reset": "Restarigi defaŭltan",
339
+ "oauth_callbacks.invalid": "Ne konservite. Ĉi tiuj ne estas uzeblaj retrekomencaj URL-oj: {urls}. Uzu https://, aŭ http:// je 127.0.0.1, [::1] aŭ localhost, sen uzantnomo, pasvorto aŭ #fragment.",
340
+ "oauth_callbacks.saved": "Konservite. Validas por la venonta ensaluto.",
341
+ "oauth_callbacks.load_failed": "Ne eblis ŝargi la retrekomencan liston (HTTP {status}). Reŝargu la paĝon por provi denove.",
342
+ "oauth_callbacks.load_error": "Ne eblis ŝargi la retrekomencan liston: la peto malsukcesis. Reŝargu la paĝon por provi denove.",
332
343
  "origins.env_locked": "Agordita per medio-variablo; malagordu ĝin por redakti ĉi tie.",
333
344
  "origins.addon_synced": "Sinkronigita al la agorda langeto de la apo (aldonaĵo). Restartigo postulata post konservo.",
334
345
  "origins.env_var_unset": "Agordita per medio-variablo {variable}; malagordu ĝin por redakti ĉi tie.",
@@ -47,6 +47,7 @@
47
47
  "server.sections.sidecar": "Sidecar de la interfaz de ajustes",
48
48
  "server.sections.beta": "Funciones beta (peligrosas)",
49
49
  "server.sections.developer": "Desarrollo",
50
+ "server.sections.remote_access": "Acceso remoto",
50
51
  "server.sidecar.disable": "Desactivar permanentemente el servidor de ajustes",
51
52
  "server.sidecar.disable_title": "Desactiva permanentemente la interfaz de ajustes: detiene este servidor Y escribe ~/.ha-mcp/settings_ui_disabled para que no vuelva a arrancar en futuros inicios de ha-mcp. Elimina ese archivo para reactivarla.",
52
53
  "backups.loading": "Cargando el estado de las copias de seguridad…",
@@ -329,6 +330,16 @@
329
330
  "filesystem.custom.unavailable": "Las rutas personalizadas no están disponibles actualmente.",
330
331
  "filesystem.custom.save": "Guardar rutas",
331
332
  "filesystem.custom.saved_rejected": "Guardado. Rechazados (bloqueados o no válidos): {paths}",
333
+ "oauth_callbacks.title": "URLs de devolución de llamada de OAuth permitidas",
334
+ "oauth_callbacks.help": "Mientras el modo de autenticación sea la URL de webhook secreta, un cliente que inicie sesión con OAuth solo será redirigido a una URL de devolución de llamada de esta lista; cualquier otra devolución de llamada se rechazará con una página que explica cómo añadirla. Introduce una URL por línea, exactamente como la envía el cliente. Una devolución de llamada de bucle invertido <code>http://</code> (127.0.0.1, [::1] o localhost) también coincide en cualquier puerto. Los clientes que se conectan solo con la URL de webhook no necesitan ninguna entrada. Los cambios se aplican en el próximo inicio de sesión, sin necesidad de reiniciar.",
335
+ "oauth_callbacks.default": "Lista predeterminada: {urls}",
336
+ "oauth_callbacks.inactive": "No se está usando en este momento: la lista solo se aplica mientras el acceso remoto está activado y el modo de autenticación es la URL de webhook secreta.",
337
+ "oauth_callbacks.save": "Guardar devoluciones de llamada",
338
+ "oauth_callbacks.reset": "Restaurar predeterminado",
339
+ "oauth_callbacks.invalid": "No guardado. Estas no son URLs de devolución de llamada utilizables: {urls}. Usa https://, o http:// en 127.0.0.1, [::1] o localhost, sin nombre de usuario, contraseña ni #fragment.",
340
+ "oauth_callbacks.saved": "Guardado. Se aplica al próximo inicio de sesión.",
341
+ "oauth_callbacks.load_failed": "No se pudo cargar la lista de devoluciones de llamada (HTTP {status}). Recarga la página para intentarlo de nuevo.",
342
+ "oauth_callbacks.load_error": "No se pudo cargar la lista de devoluciones de llamada: la solicitud falló. Recarga la página para intentarlo de nuevo.",
332
343
  "origins.env_locked": "Definido mediante una variable de entorno; quítala para poder editarlo aquí.",
333
344
  "origins.addon_synced": "Sincronizado con la pestaña de configuración de la app (add-on). Se requiere reiniciar después de guardar.",
334
345
  "origins.env_var_unset": "Definido mediante la variable de entorno {variable}; quítala para poder editarlo aquí.",
@@ -47,6 +47,7 @@
47
47
  "server.sections.sidecar": "Sidecar de l'interface des paramètres",
48
48
  "server.sections.beta": "Fonctionnalités bêta (dangereuses)",
49
49
  "server.sections.developer": "Développeur",
50
+ "server.sections.remote_access": "Accès distant",
50
51
  "server.sidecar.disable": "Désactiver définitivement le serveur de paramètres",
51
52
  "server.sidecar.disable_title": "Désactive définitivement l'interface des paramètres : arrête ce serveur ET écrit ~/.ha-mcp/settings_ui_disabled pour qu'il ne redémarre pas lors des futurs lancements de ha-mcp. Supprimez ce fichier pour réactiver.",
52
53
  "backups.loading": "Chargement de l'état des sauvegardes…",
@@ -329,6 +330,16 @@
329
330
  "filesystem.custom.unavailable": "Les chemins personnalisés sont actuellement indisponibles.",
330
331
  "filesystem.custom.save": "Enregistrer les chemins",
331
332
  "filesystem.custom.saved_rejected": "Enregistré. Rejeté (bloqué ou invalide) : {paths}",
333
+ "oauth_callbacks.title": "URLs de rappel OAuth autorisées",
334
+ "oauth_callbacks.help": "Lorsque le mode d'authentification est l'URL de webhook secrète, un client qui se connecte via OAuth est redirigé uniquement vers une URL de rappel figurant sur cette liste ; tout autre rappel est refusé avec une page expliquant comment l'ajouter. Entrez une URL par ligne, exactement telle que le client l'envoie. Un rappel de bouclage <code>http://</code> (127.0.0.1, [::1] ou localhost) correspond également à n'importe quel port. Les clients qui se connectent uniquement avec l'URL de webhook n'ont pas besoin d'entrée. Les modifications s'appliquent à la prochaine connexion, sans redémarrage.",
335
+ "oauth_callbacks.default": "Liste par défaut : {urls}",
336
+ "oauth_callbacks.inactive": "Inactif pour le moment : la liste ne s'applique que lorsque l'accès distant est activé et que le mode d'authentification est l'URL de webhook secrète.",
337
+ "oauth_callbacks.save": "Enregistrer les rappels",
338
+ "oauth_callbacks.reset": "Restaurer la valeur par défaut",
339
+ "oauth_callbacks.invalid": "Non enregistré. Ces URLs de rappel ne sont pas utilisables : {urls}. Utilisez https:// ou http:// sur 127.0.0.1, [::1] ou localhost, sans nom d'utilisateur, mot de passe ni #fragment.",
340
+ "oauth_callbacks.saved": "Enregistré. S'applique à la prochaine connexion.",
341
+ "oauth_callbacks.load_failed": "Impossible de charger la liste des rappels (HTTP {status}). Rechargez la page pour réessayer.",
342
+ "oauth_callbacks.load_error": "Impossible de charger la liste des rappels : la requête a échoué. Rechargez la page pour réessayer.",
332
343
  "origins.env_locked": "Défini via une variable d'environnement ; désactivez-la pour modifier ici.",
333
344
  "origins.addon_synced": "Synchronisé avec l'onglet Configuration de l'application (add-on). Redémarrage requis après l'enregistrement.",
334
345
  "origins.env_var_unset": "Défini via la variable d'environnement {variable} ; désactivez-la pour modifier ici.",
@@ -47,6 +47,7 @@
47
47
  "server.sections.sidecar": "Sidecar dell'interfaccia delle impostazioni",
48
48
  "server.sections.beta": "Funzioni beta (pericolose)",
49
49
  "server.sections.developer": "Sviluppo",
50
+ "server.sections.remote_access": "Accesso remoto",
50
51
  "server.sidecar.disable": "Disattiva permanentemente il server delle impostazioni",
51
52
  "server.sidecar.disable_title": "Disattiva permanentemente l'interfaccia delle impostazioni: ferma questo server E scrive ~/.ha-mcp/settings_ui_disabled in modo che non riparta ai prossimi avvii di ha-mcp. Elimina quel file per riattivarla.",
52
53
  "backups.loading": "Caricamento dello stato dei backup…",
@@ -329,6 +330,16 @@
329
330
  "filesystem.custom.unavailable": "I percorsi personalizzati non sono attualmente disponibili.",
330
331
  "filesystem.custom.save": "Salva percorsi",
331
332
  "filesystem.custom.saved_rejected": "Salvato. Rifiutati (bloccati o non validi): {paths}",
333
+ "oauth_callbacks.title": "URL di callback OAuth consentiti",
334
+ "oauth_callbacks.help": "Mentre la modalità di autenticazione è l'URL webhook segreto, un client che effettua l'accesso con OAuth viene reindirizzato solo a un URL di callback presente in questo elenco; qualsiasi altro callback viene rifiutato con una pagina che spiega come aggiungerlo. Inserisci un URL per riga, esattamente come lo invia il client. Un callback di loopback <code>http://</code> (127.0.0.1, [::1] o localhost) corrisponde anche a qualsiasi porta. I client che si connettono solo con l'URL webhook non richiedono alcuna voce. Le modifiche si applicano al successivo accesso, senza riavviare.",
335
+ "oauth_callbacks.default": "Elenco predefinito: {urls}",
336
+ "oauth_callbacks.inactive": "Non in uso al momento: l'elenco si applica solo quando l'accesso remoto è attivo e la modalità di autenticazione è l'URL webhook segreto.",
337
+ "oauth_callbacks.save": "Salva callback",
338
+ "oauth_callbacks.reset": "Ripristina predefiniti",
339
+ "oauth_callbacks.invalid": "Non salvato. Questi non sono URL di callback utilizzabili: {urls}. Usa https://, oppure http:// su 127.0.0.1, [::1] o localhost, senza nome utente, password o #fragment.",
340
+ "oauth_callbacks.saved": "Salvato. Si applica al successivo accesso.",
341
+ "oauth_callbacks.load_failed": "Impossibile caricare l'elenco dei callback (HTTP {status}). Ricarica la pagina per riprovare.",
342
+ "oauth_callbacks.load_error": "Impossibile caricare l'elenco dei callback: la richiesta non è riuscita. Ricarica la pagina per riprovare.",
332
343
  "origins.env_locked": "Impostato tramite variabile d'ambiente; toglila per modificarlo qui.",
333
344
  "origins.addon_synced": "Sincronizzato con la scheda Configuration dell'applicazione (add-on). Riavvio richiesto dopo il salvataggio.",
334
345
  "origins.env_var_unset": "Impostato tramite la variabile d'ambiente {variable}; toglila per modificarlo qui.",
@@ -47,6 +47,7 @@
47
47
  "server.sections.sidecar": "설정 UI 사이드카",
48
48
  "server.sections.beta": "베타 기능(위험)",
49
49
  "server.sections.developer": "개발자",
50
+ "server.sections.remote_access": "원격 접근",
50
51
  "server.sidecar.disable": "설정 서버 영구 비활성화",
51
52
  "server.sidecar.disable_title": "설정 UI를 영구히 비활성화합니다. 이 서버를 중지하고 ~/.ha-mcp/settings_ui_disabled 파일을 기록해 이후 ha-mcp 실행 시 다시 뜨지 않게 합니다. 다시 켜려면 그 파일을 삭제하세요.",
52
53
  "backups.loading": "백업 상태를 불러오는 중…",
@@ -329,6 +330,16 @@
329
330
  "filesystem.custom.unavailable": "현재 사용자 지정 경로를 사용할 수 없습니다.",
330
331
  "filesystem.custom.save": "경로 저장",
331
332
  "filesystem.custom.saved_rejected": "저장했습니다. 거부된 항목(차단되었거나 잘못됨): {paths}",
333
+ "oauth_callbacks.title": "허용된 OAuth 콜백 URL",
334
+ "oauth_callbacks.help": "인증 모드가 비밀 웹훅 URL인 동안에는, OAuth로 로그인한 클라이언트는 이 목록에 있는 콜백 URL로만 리디렉션되며, 다른 콜백은 추가 방법을 설명하는 페이지와 함께 거부됩니다. 클라이언트가 보내는 그대로 줄당 하나의 URL을 입력하세요. <code>http://</code> 루프백 콜백(127.0.0.1, [::1] 또는 localhost)은 모든 포트에서도 일치합니다. 웹훅 URL만으로 연결하는 클라이언트는 항목이 필요하지 않습니다. 변경 사항은 재시작 없이 다음 로그인부터 적용됩니다.",
335
+ "oauth_callbacks.default": "기본 목록: {urls}",
336
+ "oauth_callbacks.inactive": "현재 사용되지 않음: 이 목록은 원격 접근이 켜져 있고 인증 모드가 비밀 웹훅 URL일 때만 적용됩니다.",
337
+ "oauth_callbacks.save": "콜백 저장",
338
+ "oauth_callbacks.reset": "기본값 복원",
339
+ "oauth_callbacks.invalid": "저장되지 않았습니다. 다음은 사용할 수 없는 콜백 URL입니다: {urls}. 사용자 이름, 비밀번호 또는 #fragment 없이 https:// 또는 127.0.0.1, [::1] 또는 localhost의 http://를 사용하세요.",
340
+ "oauth_callbacks.saved": "저장되었습니다. 다음 로그인부터 적용됩니다.",
341
+ "oauth_callbacks.load_failed": "콜백 목록을 불러올 수 없습니다 (HTTP {status}). 페이지를 다시 불러와서 다시 시도하세요.",
342
+ "oauth_callbacks.load_error": "콜백 목록을 불러올 수 없습니다: 요청이 실패했습니다. 페이지를 다시 불러와서 다시 시도하세요.",
332
343
  "origins.env_locked": "환경 변수로 설정되어 있습니다. 여기서 편집하려면 해제하세요.",
333
344
  "origins.addon_synced": "앱(애드온) 구성 탭과 동기화됩니다. 저장 후 다시 시작해야 합니다.",
334
345
  "origins.env_var_unset": "환경 변수 {variable}로 설정되어 있습니다. 여기서 편집하려면 해제하세요.",
@@ -47,6 +47,7 @@
47
47
  "server.sections.sidecar": "Instellingen UI sidecar",
48
48
  "server.sections.beta": "Bètafuncties (gevaarlijk)",
49
49
  "server.sections.developer": "Ontwikkelaar",
50
+ "server.sections.remote_access": "Externe toegang",
50
51
  "server.sidecar.disable": "Instellingenserver permanent uitschakelen",
51
52
  "server.sidecar.disable_title": "Schakelt de instellingen-UI permanent uit: stopt deze server EN schrijft ~/.ha-mcp/settings_ui_disabled zodat deze niet opnieuw wordt gestart bij toekomstige ha-mcp lanceringen. Verwijder dat bestand om opnieuw in te schakelen.",
52
53
  "backups.loading": "Back-upstatus laden…",
@@ -329,6 +330,16 @@
329
330
  "filesystem.custom.unavailable": "Aangepaste paden zijn momenteel niet beschikbaar.",
330
331
  "filesystem.custom.save": "Paden opslaan",
331
332
  "filesystem.custom.saved_rejected": "Opgeslagen. Geweigerd (geblokkeerd of ongeldig): {paths}",
333
+ "oauth_callbacks.title": "Toegestane OAuth-terugbel-URL's",
334
+ "oauth_callbacks.help": "Terwijl de authenticatiemodus de geheime webhook-URL is, wordt een cliënt die inlogt met OAuth alleen teruggestuurd naar een terugbel-URL op deze lijst; elke andere terugbelactie wordt geweigerd met een pagina die uitlegt hoe je deze kunt toevoegen. Voer één URL per regel in, precies zoals de cliënt deze verzendt. Een <code>http://</code> loopback-terugbel-URL (127.0.0.1, [::1] of localhost) komt ook overeen op elke poort. Cliënten die alleen verbinding maken met de webhook-URL hebben geen vermelding nodig. Wijzigingen zijn van toepassing op de volgende aanmelding, zonder herstart.",
335
+ "oauth_callbacks.default": "Standaardlijst: {urls}",
336
+ "oauth_callbacks.inactive": "Momenteel niet in gebruik: de lijst is alleen van toepassing wanneer externe toegang is ingeschakeld en de authenticatiemodus de geheime webhook-URL is.",
337
+ "oauth_callbacks.save": "Terugbel-URL's opslaan",
338
+ "oauth_callbacks.reset": "Standaardherstel",
339
+ "oauth_callbacks.invalid": "Niet opgeslagen. Dit zijn geen bruikbare terugbel-URL's: {urls}. Gebruik https://, of http:// op 127.0.0.1, [::1] of localhost, zonder gebruikersnaam, wachtwoord of #fragment.",
340
+ "oauth_callbacks.saved": "Opgeslagen. Is van toepassing op de volgende aanmelding.",
341
+ "oauth_callbacks.load_failed": "Kon de terugbelijst niet laden (HTTP {status}). Herlaad de pagina om het opnieuw te proberen.",
342
+ "oauth_callbacks.load_error": "Kon de terugbelijst niet laden: het verzoek is mislukt. Herlaad de pagina om het opnieuw te proberen.",
332
343
  "origins.env_locked": "Ingesteld via omgevingsvariabele; maak deze ongedaan om hier te bewerken.",
333
344
  "origins.addon_synced": "Gesynchroniseerd met het tabblad Configuratie van de app (add-on). Herstart vereist na opslaan.",
334
345
  "origins.env_var_unset": "Ingesteld via omgevingsvariabele {variable}; maak deze ongedaan om hier te bewerken.",
@@ -47,6 +47,7 @@
47
47
  "server.sections.sidecar": "Panel boczny interfejsu ustawień",
48
48
  "server.sections.beta": "Funkcje beta (niebezpieczne)",
49
49
  "server.sections.developer": "Deweloper",
50
+ "server.sections.remote_access": "Dostęp zdalny",
50
51
  "server.sidecar.disable": "Trwale wyłącz serwer ustawień",
51
52
  "server.sidecar.disable_title": "Trwale wyłącza interfejs użytkownika ustawień: zatrzymuje ten serwer ORAZ zapisuje ~/.ha-mcp/settings_ui_disabled, aby nie uruchamiał się ponownie przy przyszłych uruchomieniach ha-mcp. Usuń ten plik, aby ponownie włączyć.",
52
53
  "backups.loading": "Ładowanie stanu kopii zapasowej…",
@@ -329,6 +330,16 @@
329
330
  "filesystem.custom.unavailable": "Niestandardowe ścieżki są obecnie niedostępne.",
330
331
  "filesystem.custom.save": "Zapisz ścieżki",
331
332
  "filesystem.custom.saved_rejected": "Zapisano. Odrzucono (zablokowane lub nieprawidłowe): {paths}",
333
+ "oauth_callbacks.title": "Dozwolone adresy URL zwrotne OAuth",
334
+ "oauth_callbacks.help": "Gdy trybem uwierzytelniania jest tajny adres URL webhooka, klient logujący się przez OAuth jest odsyłany tylko na adres URL zwrotny z tej listy; każde inne wywołanie zwrotne jest odrzucane ze stroną wyjaśniającą, jak je dodać. Wpisz jeden adres URL w linii, dokładnie tak, jak przesyła go klient. Adres zwrotny pętli zwrotnej <code>http://</code> (127.0.0.1, [::1] lub localhost) pasuje również do każdego portu. Klienci łączący się wyłącznie za pomocą adresu URL webhooka nie potrzebują wpisu. Zmiany obowiązują przy następnym logowaniu, bez restartu.",
335
+ "oauth_callbacks.default": "Lista domyślna: {urls}",
336
+ "oauth_callbacks.inactive": "Obecnie nieużywane: lista obowiązuje tylko wtedy, gdy włączony jest dostęp zdalny, a trybem uwierzytelniania jest tajny adres URL webhooka.",
337
+ "oauth_callbacks.save": "Zapisz adresy zwrotne",
338
+ "oauth_callbacks.reset": "Przywróć domyślne",
339
+ "oauth_callbacks.invalid": "Nie zapisano. Te adresy URL zwrotne nie nadają się do użytku: {urls}. Użyj protokołu https:// lub http:// dla 127.0.0.1, [::1] lub localhost, bez nazwy użytkownika, hasła lub fragmentu #.",
340
+ "oauth_callbacks.saved": "Zapisano. Dotyczy następnego logowania.",
341
+ "oauth_callbacks.load_failed": "Nie można wczytać listy adresów zwrotnych (HTTP {status}). Odśwież stronę, aby spróbować ponownie.",
342
+ "oauth_callbacks.load_error": "Nie można wczytać listy adresów zwrotnych: żądanie nie powiodło się. Odśwież stronę, aby spróbować ponownie.",
332
343
  "origins.env_locked": "Ustawiono za pomocą zmiennej środowiskowej; usuń ją, aby edytować tutaj.",
333
344
  "origins.addon_synced": "Zsynchronizowano z kartą konfiguracji aplikacji (dodatku). Po zapisaniu wymagane jest ponowne uruchomienie.",
334
345
  "origins.env_var_unset": "Ustawiono za pomocą zmiennej środowiskowej {variable}; usuń ją, aby edytować tutaj.",
@@ -47,6 +47,7 @@
47
47
  "server.sections.sidecar": "Вспомогательный сервер интерфейса",
48
48
  "server.sections.beta": "Бета-функции (опасно)",
49
49
  "server.sections.developer": "Для разработчиков",
50
+ "server.sections.remote_access": "Удаленный доступ",
50
51
  "server.sidecar.disable": "Навсегда отключить сервер настроек",
51
52
  "server.sidecar.disable_title": "Останавливает сервер интерфейса настроек и создаёт файл ~/.ha-mcp/settings_ui_disabled, запрещающий его автоматический запуск в дальнейшем. Чтобы снова включить интерфейс, удалите этот файл.",
52
53
  "backups.loading": "Загрузка состояния резервных копий…",
@@ -329,6 +330,16 @@
329
330
  "filesystem.custom.unavailable": "Пользовательские пути в настоящее время недоступны.",
330
331
  "filesystem.custom.save": "Сохранить пути",
331
332
  "filesystem.custom.saved_rejected": "Сохранено. Отклонены заблокированные или неверные пути: {paths}",
333
+ "oauth_callbacks.title": "Разрешенные URL обратного вызова OAuth",
334
+ "oauth_callbacks.help": "Пока в качестве режима аутентификации используется секретный URL вебхука, клиент, выполняющий вход через OAuth, перенаправляется только на URL обратного вызова из этого списка; любые другие обратные вызовы отклоняются с выводом страницы с инструкциями по их добавлению. Вводите по одному URL на строку, в точности так, как их передает клиент. Обратный вызов через loopback-адрес <code>http://</code> (127.0.0.1, [::1] или localhost) также совпадает с любым портом. Клиентам, подключающимся только с помощью URL вебхука, запись не требуется. Изменения вступают в силу со следующим входом без перезапуска.",
335
+ "oauth_callbacks.default": "Список по умолчанию: {urls}",
336
+ "oauth_callbacks.inactive": "Сейчас не используется: список применяется только при включенном удаленном доступе и режиме аутентификации «секретный URL вебхука».",
337
+ "oauth_callbacks.save": "Сохранить обратные вызовы",
338
+ "oauth_callbacks.reset": "Восстановить по умолчанию",
339
+ "oauth_callbacks.invalid": "Не сохранено. Это недопустимые URL обратного вызова: {urls}. Используйте https:// или http:// для 127.0.0.1, [::1] или localhost, без имени пользователя, пароля или фрагмента #.",
340
+ "oauth_callbacks.saved": "Сохранено. Применяется ко входу в систему.",
341
+ "oauth_callbacks.load_failed": "Не удалось загрузить список обратных вызовов (HTTP {status}). Обновите страницу, чтобы повторить попытку.",
342
+ "oauth_callbacks.load_error": "Не удалось загрузить список обратных вызовов: сбой запроса. Обновите страницу, чтобы повторить попытку.",
332
343
  "origins.env_locked": "Задано переменной среды; снимите её, чтобы изменять здесь.",
333
344
  "origins.addon_synced": "Синхронизировано с вкладкой конфигурации приложения (аддона). После сохранения требуется перезапуск.",
334
345
  "origins.env_var_unset": "Задано переменной среды {variable}; снимите её, чтобы изменять здесь.",
@@ -47,6 +47,7 @@
47
47
  "server.sections.sidecar": "Inställnings-UI sidovagn",
48
48
  "server.sections.beta": "Betafunktioner (farliga)",
49
49
  "server.sections.developer": "Utvecklare",
50
+ "server.sections.remote_access": "Fjärråtkomst",
50
51
  "server.sidecar.disable": "Inaktivera inställningsservern permanent",
51
52
  "server.sidecar.disable_title": "Inaktiverar inställnings-UI permanent: stoppar denna server OCH skriver ~/.ha-mcp/settings_ui_disabled så att den inte återuppstår vid framtida ha-mcp-starter. Ta bort den filen för att återaktivera.",
52
53
  "backups.loading": "Laddar säkerhetskopieringsstatus…",
@@ -329,6 +330,16 @@
329
330
  "filesystem.custom.unavailable": "Anpassade sökvägar är för närvarande inte tillgängliga.",
330
331
  "filesystem.custom.save": "Spara sökvägar",
331
332
  "filesystem.custom.saved_rejected": "Sparat. Avvisades (blockerade eller ogiltiga): {paths}",
333
+ "oauth_callbacks.title": "Tillåtna OAuth-återanrops-URL:er",
334
+ "oauth_callbacks.help": "Medan autentiseringsläget är den hemliga webhook-URL:en skickas en klient som loggar in med OAuth endast tillbaka till en återanrops-URL i den här listan; alla andra återanrop nekas med en sida som förklarar hur man lägger till den. Ange en URL per rad, exakt som klienten skickar den. Ett <code>http://</code>-loopback-återanrop (127.0.0.1, [::1] eller localhost) matchar också på valfri port. Klienter som ansluter enbart med webhook-URL:en behöver ingen post. Ändringar tillämpas vid nästa inloggning, utan omstart.",
335
+ "oauth_callbacks.default": "Standardlista: {urls}",
336
+ "oauth_callbacks.inactive": "Inte i bruk just nu: listan gäller endast när fjärråtkomst är på och autentiseringsläget är den hemliga webhook-URL:en.",
337
+ "oauth_callbacks.save": "Spara återanrop",
338
+ "oauth_callbacks.reset": "Återställ standard",
339
+ "oauth_callbacks.invalid": "Inte sparat. Dessa är inte användbara återanrops-URL:er: {urls}. Använd https:// eller http:// på 127.0.0.1, [::1] eller localhost, utan användarnamn, lösenord eller #fragment.",
340
+ "oauth_callbacks.saved": "Sparat. Gäller vid nästa inloggning.",
341
+ "oauth_callbacks.load_failed": "Kunde inte läsa in återanropslistan (HTTP {status}). Ladda om sidan för att försöka igen.",
342
+ "oauth_callbacks.load_error": "Kunde inte läsa in återanropslistan: begäran misslyckades. Ladda om sidan för att försöka igen.",
332
343
  "origins.env_locked": "Anges via miljövariabel; avmarkera den för att redigera här.",
333
344
  "origins.addon_synced": "Synkroniserat till fliken Configuration för appen (tillägget). Omstart krävs efter sparande.",
334
345
  "origins.env_var_unset": "Anges via miljövariabel {variable}; avmarkera den för att redigera här.",
@@ -47,6 +47,7 @@
47
47
  "server.sections.sidecar": "设置界面旁路服务",
48
48
  "server.sections.beta": "测试版功能(危险)",
49
49
  "server.sections.developer": "开发者",
50
+ "server.sections.remote_access": "远程访问",
50
51
  "server.sidecar.disable": "永久禁用设置服务器",
51
52
  "server.sidecar.disable_title": "永久禁用设置界面:停止此服务器,并写入 ~/.ha-mcp/settings_ui_disabled,使其在 ha-mcp 将来的启动时不再自动启动。删除该文件即可重新启用。",
52
53
  "backups.loading": "正在加载备份状态…",
@@ -329,6 +330,16 @@
329
330
  "filesystem.custom.unavailable": "自定义路径当前不可用。",
330
331
  "filesystem.custom.save": "保存路径",
331
332
  "filesystem.custom.saved_rejected": "已保存。被拒绝(被阻止或无效):{paths}",
333
+ "oauth_callbacks.title": "允许的 OAuth 回调 URL",
334
+ "oauth_callbacks.help": "当身份验证模式为机密 webhook URL 时,使用 OAuth 登录的客户端仅会被重定向回此列表中的回调 URL;任何其他回调都将被拒绝,并显示一个解释如何添加它的页面。每行输入一个 URL,必须与客户端发送的完全一致。<code>http://</code> 回环回调(127.0.0.1、[::1] 或 localhost)也匹配任意端口。仅通过 webhook URL 连接的客户端不需要在此条目中添加。更改将在下次登录时生效,无需重启。",
335
+ "oauth_callbacks.default": "默认列表:{urls}",
336
+ "oauth_callbacks.inactive": "当前未在使用:此列表仅在启用远程访问且身份验证模式为机密 webhook URL 时生效。",
337
+ "oauth_callbacks.save": "保存回调",
338
+ "oauth_callbacks.reset": "恢复默认",
339
+ "oauth_callbacks.invalid": "未保存。这些是无效的回调 URL:{urls}。请使用 https://,或在 127.0.0.1、[::1] 或 localhost 上使用 http://,且不能包含用户名、密码或 #fragment。",
340
+ "oauth_callbacks.saved": "已保存。将在下次登录时生效。",
341
+ "oauth_callbacks.load_failed": "无法加载回调列表(HTTP {status})。请重新加载页面以重试。",
342
+ "oauth_callbacks.load_error": "无法加载回调列表:请求失败。请重新加载页面以重试。",
332
343
  "origins.env_locked": "通过环境变量设置;取消它才能在此编辑。",
333
344
  "origins.addon_synced": "已同步至应用(附加组件)配置标签页。保存后需要重启。",
334
345
  "origins.env_var_unset": "通过环境变量 {variable} 设置;取消它才能在此编辑。",
@@ -47,6 +47,7 @@
47
47
  "server.sections.sidecar": "設定 UI sidecar",
48
48
  "server.sections.beta": "測試版功能(具風險)",
49
49
  "server.sections.developer": "開發人員",
50
+ "server.sections.remote_access": "遠端存取",
50
51
  "server.sidecar.disable": "永久停用設定伺服器",
51
52
  "server.sidecar.disable_title": "永久停用設定 UI:停止此伺服器並寫入 ~/.ha-mcp/settings_ui_disabled,以便在未來的 ha-mcp 啟動時不會重新衍生。刪除該檔案以重新啟用。",
52
53
  "backups.loading": "正在載入備份狀態…",
@@ -329,6 +330,16 @@
329
330
  "filesystem.custom.unavailable": "自訂路徑目前無法使用。",
330
331
  "filesystem.custom.save": "儲存路徑",
331
332
  "filesystem.custom.saved_rejected": "已儲存。已拒絕(遭封鎖或無效):{paths}",
333
+ "oauth_callbacks.title": "允許的 OAuth 回呼 URL",
334
+ "oauth_callbacks.help": "當驗證模式為秘密 webhook URL 時,透過 OAuth 登入的用戶端只會被導回此清單上的回呼 URL;任何其他回呼都會被拒絕,並顯示說明如何新增的頁面。每行輸入一個 URL,必須與用戶端傳送的完全一致。<code>http://</code> 迴圈回呼(127.0.0.1、[::1] 或 localhost)也適用於任何連接埠。僅使用 webhook URL 連線的用戶端不需要條目。變更會在下次登入時生效,無需重新啟動。",
335
+ "oauth_callbacks.default": "預設清單:{urls}",
336
+ "oauth_callbacks.inactive": "目前未使用:此清單僅在遠端存取開啟且驗證模式為秘密 webhook URL 時生效。",
337
+ "oauth_callbacks.save": "儲存回呼",
338
+ "oauth_callbacks.reset": "恢復預設值",
339
+ "oauth_callbacks.invalid": "未儲存。這些是無法使用的回呼 URL:{urls}。請使用 https://,或在 127.0.0.1、[::1] 或 localhost 上使用 http://,且不得包含使用者名稱、密碼或 #fragment。",
340
+ "oauth_callbacks.saved": "已儲存。將於下次登入時生效。",
341
+ "oauth_callbacks.load_failed": "無法載入回呼清單(HTTP {status})。請重新載入頁面以重試。",
342
+ "oauth_callbacks.load_error": "無法載入回呼清單:要求失敗。請重新載入頁面以重試。",
332
343
  "origins.env_locked": "透過環境變數設定;取消設定即可在此處編輯。",
333
344
  "origins.addon_synced": "已同步至應用程式 (add-on) 的「設定」分頁。儲存後需要重新啟動。",
334
345
  "origins.env_var_unset": "透過環境變數 {variable} 設定;取消設定即可在此處編輯。",
@@ -19,6 +19,10 @@ or somewhere in between. This module negotiates that with a single cached
19
19
  surface entirely; caps are cached as ``None`` and every consumer falls back
20
20
  to its legacy path.
21
21
 
22
+ ``read_info`` reads ``info`` fresh for callers that show a field which can
23
+ change while the client lives (the bug report's component version and webhook
24
+ auth mode); routing and gating keep using the snapshot.
25
+
22
26
  This mirrors the caller-token cache in ``tools_filesystem.py``: weak-keyed by
23
27
  client so multi-client / OAuth setups each negotiate independently and the
24
28
  entry self-evicts when a client is garbage-collected.
@@ -45,6 +49,8 @@ logger = logging.getLogger(__name__)
45
49
  # The WS command every 1.1.0+ component registers; probing it does double duty
46
50
  # (existence check + capability enumeration — see module docstring).
47
51
  INFO_COMMAND = "ha_mcp_tools/info"
52
+ # The ``result`` of an ``info`` call, as ``read_info`` returns it.
53
+ InfoResult = dict[str, Any]
48
54
 
49
55
  # HA's structured error code for a command no handler is registered for. Routing
50
56
  # keys off this (via the ``code`` attribute threaded onto
@@ -406,3 +412,61 @@ def invalidate_caps(client: Any) -> None:
406
412
  _CAPS_CACHE.pop(client, None)
407
413
  _NEGATIVE_CACHE_TS.pop(client, None)
408
414
  _TRANSIENT_NEGATIVE_TS.pop(client, None)
415
+
416
+
417
+ async def read_info(client: Any) -> InfoResult | None:
418
+ """The ``result`` of a fresh ``ha_mcp_tools/info`` call (#2584).
419
+
420
+ For callers that show a field which can change while the client lives:
421
+ the bug report's component version and webhook auth mode. Routing and
422
+ gating keep the ``get_component_caps`` snapshot, which lasts as long as the
423
+ client (for a server running outside HA, an HA restart does not end it),
424
+ while a component update changes the version and an options change the
425
+ mode. Only a component whose ``info`` the snapshot accepted is asked. The
426
+ call goes to ``send_command`` on the pooled WebSocket directly, as the
427
+ probe does, bypassing ``send_websocket_message``'s ERROR log (a report
428
+ quotes its log sections); an ``unknown_command`` drops the snapshot so the
429
+ next caller re-probes. None in that case and on any failure.
430
+ """
431
+ if await get_component_caps(client) is None:
432
+ return None
433
+ try:
434
+ ws = await get_websocket_client(
435
+ url=client.base_url,
436
+ token=client.token,
437
+ verify_ssl=getattr(client, "verify_ssl", None),
438
+ )
439
+ response = await ws.send_command(INFO_COMMAND)
440
+ except Exception as e: # noqa: BLE001
441
+ if is_unknown_command(e):
442
+ invalidate_caps(client)
443
+ logger.info("Fresh %s read failed: %s (%s)", INFO_COMMAND, e, type(e).__name__)
444
+ return None
445
+ result = response.get("result") if isinstance(response, dict) else None
446
+ return result if isinstance(result, dict) else None
447
+
448
+
449
+ async def read_component_version(client: Any, info: InfoResult | None) -> str | None:
450
+ """The component version for a report: from ``info``, else the snapshot's.
451
+
452
+ ``info`` is a ``read_info`` result. When that read failed, the snapshot
453
+ still shows the component is installed. After an ``unknown_command``,
454
+ ``read_info`` has dropped the snapshot, so the re-probe normally finds no
455
+ ``info`` either and the result is None. ``""`` when the component reports no
456
+ version; None only when there is no usable ``info``.
457
+ """
458
+ if info is not None:
459
+ return str(info.get("component_version") or "")
460
+ caps = await get_component_caps(client)
461
+ return caps.component_version if caps is not None else None
462
+
463
+
464
+ def webhook_auth(info: InfoResult | None) -> str | None:
465
+ """The server entry's webhook auth mode from a ``read_info`` result.
466
+
467
+ Python None, not the ``"none"`` mode: without ``info``, or when its
468
+ ``webhook_auth`` is missing (an older component) or not a string. The
469
+ component sends None without a running in-process server.
470
+ """
471
+ auth = info.get("webhook_auth") if info else None
472
+ return auth if isinstance(auth, str) else None
@@ -0,0 +1,77 @@
1
+ """The running ha-mcp version against the one installed on disk.
2
+
3
+ ``__version__`` is frozen when the process first imports ha_mcp, so after an
4
+ in-place update the running process keeps reporting the old version while the
5
+ disk already carries the new one. Reporting both turns a "which server am I
6
+ talking to" hunt into a single tool call.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ import importlib
12
+ import logging
13
+ from typing import Any
14
+
15
+ from ha_mcp import __version__
16
+
17
+ from .._version import get_version, is_dev_version, is_embedded
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+
22
+ def detect_installed_version() -> str | None:
23
+ """Return the installed ha-mcp version as ``get_version`` resolves it now.
24
+
25
+ That is the package metadata on disk, or ``HA_MCP_BUILD_VERSION`` when set.
26
+ None when it cannot be read.
27
+ """
28
+ try:
29
+ importlib.invalidate_caches()
30
+ except KeyError as e:
31
+ # Python 3.14 with an editable homeassistant install (the official
32
+ # container image, where the in-process server runs) raises here
33
+ # (#1891); a read without the refresh still beats none.
34
+ logger.warning("importlib.invalidate_caches() failed: %s", e)
35
+ try:
36
+ version = get_version()
37
+ except Exception as e: # noqa: BLE001
38
+ logger.info("Installed-version probe failed: %s", e)
39
+ return None
40
+ return None if version == "unknown" else version
41
+
42
+
43
+ def version_mismatch(installed: str | None) -> bool:
44
+ """True when ``installed`` is not the version this process imported.
45
+
46
+ A failed probe (None) is no mismatch.
47
+ """
48
+ return bool(installed and installed != __version__)
49
+
50
+
51
+ def running_version_report() -> tuple[dict[str, Any], list[str]]:
52
+ """``info``'s version fields, and a warning when they disagree or the
53
+ installed version cannot be read.
54
+
55
+ ``server_version`` is the running one. In-process the hint names a Home
56
+ Assistant restart, as the component's own staleness warning does.
57
+ """
58
+ installed = detect_installed_version()
59
+ mismatch = version_mismatch(installed)
60
+ fields = {
61
+ "server_version": __version__,
62
+ "installed_version": installed,
63
+ "version_mismatch": mismatch,
64
+ "is_dev_build": is_dev_version(__version__),
65
+ }
66
+ if installed is None:
67
+ return fields, [
68
+ "Could not read the installed server version; the running and "
69
+ "installed versions were not compared."
70
+ ]
71
+ if not mismatch:
72
+ return fields, []
73
+ restart = "Home Assistant" if is_embedded() else "the server"
74
+ return fields, [
75
+ f"Running {__version__}, but {installed} is installed; restart "
76
+ f"{restart} to finish applying the update."
77
+ ]