ha-mcp-dev 9.1.0.dev3293__tar.gz → 9.1.0.dev3298__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 (829) hide show
  1. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/PKG-INFO +1 -1
  2. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/pyproject.toml +1 -1
  3. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/pyproject.toml.orig +1 -1
  4. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/backup_manager.py +5 -5
  5. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/en.json +1 -1
  6. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/settings_js/04_backups.js +2 -2
  7. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/auto_backup.py +132 -22
  8. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/backup.py +15 -11
  9. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/backup_on_demand.py +3 -0
  10. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_filesystem.py +7 -7
  11. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/LICENSE +0 -0
  12. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/README.md +0 -0
  13. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/__init__.py +0 -0
  14. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/__main__.py +0 -0
  15. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_pypi_marker +0 -0
  16. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_rich_compat.py +0 -0
  17. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/__init__.py +0 -0
  18. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  19. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  20. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  21. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  22. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  23. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  24. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  25. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  26. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  27. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  28. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  29. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  30. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  31. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  32. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  33. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  34. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  35. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  36. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  37. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev_security.py +0 -0
  38. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  39. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  40. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  41. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  42. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  43. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  44. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  45. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  46. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  47. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  48. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  49. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  50. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  51. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  52. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  53. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  54. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  55. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  56. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  57. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  58. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  59. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  60. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  61. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  62. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  63. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  64. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  65. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  66. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  67. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  68. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  69. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  70. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  71. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  72. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  73. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  74. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  75. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  76. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  77. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  78. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  79. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/mixins/skills.py +0 -0
  80. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  81. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  82. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  83. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  84. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  85. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  86. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  87. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  88. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  89. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  90. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  91. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  92. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  93. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  94. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  95. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  96. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  97. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  98. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  99. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  100. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  101. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  102. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  103. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  104. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  105. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  106. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  107. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  108. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  109. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  110. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  111. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  112. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  113. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  114. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  115. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  116. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  117. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +0 -0
  118. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  119. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  120. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  121. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  122. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  123. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  124. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  125. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  126. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  127. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  128. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  129. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  130. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  131. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  132. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  133. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  134. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  135. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  136. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  137. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  138. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  139. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  140. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  141. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  142. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  143. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  144. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  145. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  146. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  147. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  148. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  149. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  150. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  151. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  152. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  153. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  154. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  155. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  156. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  157. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  158. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  159. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  160. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  161. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  162. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  163. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  164. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  165. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  166. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  167. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  168. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  169. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  170. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  171. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  172. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  173. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  174. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  175. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  176. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  177. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  178. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  179. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  180. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  181. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  182. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  183. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  184. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  185. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  186. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  187. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  188. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  189. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  190. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/mixins/extensions.py +0 -0
  191. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  192. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  193. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  194. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  195. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  196. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  197. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  198. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  199. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  200. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  201. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  202. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  203. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  204. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  205. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  206. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  207. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  208. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  209. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  210. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  211. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  212. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  213. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  214. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  215. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  216. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  217. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  218. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  219. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  220. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  221. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  222. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  223. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  224. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  225. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  226. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  227. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  228. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  229. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  230. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  231. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  232. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  233. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  234. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  235. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  236. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  237. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  238. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  239. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/skills/__init__.py +0 -0
  240. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/skills/_constants.py +0 -0
  241. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/skills/_resources.py +0 -0
  242. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/skills/_snapshot.py +0 -0
  243. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/skills/_source.py +0 -0
  244. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/skills/client.py +0 -0
  245. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/skills/extension.py +0 -0
  246. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/skills/models.py +0 -0
  247. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  248. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  249. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  250. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  251. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  252. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  253. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  254. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  255. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  256. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  257. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  258. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  259. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  260. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  261. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  262. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  263. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  264. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  265. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  266. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  267. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  268. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  269. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  270. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  271. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  272. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  273. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  274. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  275. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  276. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  277. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  278. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  279. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  280. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  281. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  282. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  283. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  284. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  285. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  286. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  287. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  288. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  289. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  290. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  291. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  292. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  293. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  294. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  295. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  296. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  297. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  298. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  299. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  300. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  301. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  302. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  303. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  304. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  305. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  306. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  307. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  308. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  309. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  310. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  311. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  312. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  313. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  314. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  315. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  316. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  317. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  318. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  319. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  320. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  321. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  322. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  323. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  324. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  325. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  326. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  327. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  328. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  329. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  330. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  331. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  332. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  333. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  334. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  335. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  336. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  337. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  338. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  339. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  340. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  341. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  342. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  343. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  344. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  345. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  346. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  347. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  348. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  349. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  350. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  351. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  352. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  353. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  354. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  355. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  356. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  357. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  358. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  359. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  360. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  361. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  362. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  363. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  364. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  365. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  366. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  367. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  368. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  369. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  370. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  371. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  372. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  373. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  374. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  375. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  376. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  377. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  378. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  379. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  380. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  381. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  382. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  383. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  384. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  385. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  386. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  387. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  388. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  389. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  390. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  391. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  392. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  393. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  394. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  395. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  396. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  397. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  398. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  399. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  400. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  401. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  402. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  403. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  404. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/_request_clock.py +0 -0
  405. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  406. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  407. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  408. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  409. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  410. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  411. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  412. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  413. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  414. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  415. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  416. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  417. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  418. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  419. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  420. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  421. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  422. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  423. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  424. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  425. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  426. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  427. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  428. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  429. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  430. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  431. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  432. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  433. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  434. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  435. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  436. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  437. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  438. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  439. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  440. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  441. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/requirements.txt +0 -0
  442. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  443. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  444. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  445. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  446. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  447. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  448. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  449. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  450. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  451. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  452. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  453. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  454. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  455. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  456. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  457. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  458. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  459. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  460. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  461. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  462. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  463. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  464. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  465. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  466. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  467. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  468. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  469. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  470. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  471. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  472. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  473. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  474. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  475. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  476. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  477. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  478. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  479. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  480. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  481. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  482. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  483. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  484. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  485. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  486. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  487. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  488. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  489. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  490. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  491. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  492. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  493. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  494. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  495. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  496. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  497. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  498. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/_version.py +0 -0
  499. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/app_discovery.py +0 -0
  500. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/auth/__init__.py +0 -0
  501. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/auth/consent_form.py +0 -0
  502. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/auth/iss_stamp.py +0 -0
  503. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/auth/oidc_compat.py +0 -0
  504. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/auth/provider.py +0 -0
  505. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/backup_dashboards.py +0 -0
  506. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/backup_diff.py +0 -0
  507. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/backup_entities.py +0 -0
  508. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/backup_entity_ids.py +0 -0
  509. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/backup_helper_target.py +0 -0
  510. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/backup_integrations.py +0 -0
  511. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/backup_tags.py +0 -0
  512. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/backup_todo.py +0 -0
  513. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/backup_zones.py +0 -0
  514. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/browser_landing.py +0 -0
  515. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/client/__init__.py +0 -0
  516. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/client/admin_routes.py +0 -0
  517. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/client/error_log_journald.py +0 -0
  518. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/client/models.py +0 -0
  519. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/client/rest_client.py +0 -0
  520. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/client/supervisor_client.py +0 -0
  521. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/client/websocket_client.py +0 -0
  522. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/client/websocket_listener.py +0 -0
  523. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/config.py +0 -0
  524. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/config_backup.py +0 -0
  525. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/config_meta.py +0 -0
  526. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/config_overrides.py +0 -0
  527. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/config_registry.py +0 -0
  528. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/config_settings.py +0 -0
  529. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  530. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  531. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  532. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/dashboard_screenshot/engine_compat.py +0 -0
  533. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  534. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  535. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  536. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/errors.py +0 -0
  537. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/ha_request_queue.py +0 -0
  538. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  539. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/http_transport.py +0 -0
  540. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/image_info.py +0 -0
  541. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/ipv6_lan_guard.py +0 -0
  542. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/listen_sockets.py +0 -0
  543. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/llm_exposure.py +0 -0
  544. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/log_filters.py +0 -0
  545. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/mcp_client_context.py +0 -0
  546. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/policy/__init__.py +0 -0
  547. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/policy/approval_queue.py +0 -0
  548. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/policy/decision_pin.py +0 -0
  549. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/policy/decisions.py +0 -0
  550. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/policy/editing.py +0 -0
  551. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/policy/evaluator.py +0 -0
  552. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/policy/events.py +0 -0
  553. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/policy/handlers.py +0 -0
  554. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/policy/middleware.py +0 -0
  555. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/policy/model.py +0 -0
  556. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/policy/mrtr.py +0 -0
  557. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/policy/persistence.py +0 -0
  558. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/policy/server_channels.py +0 -0
  559. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/policy/value_sources.py +0 -0
  560. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/py.typed +0 -0
  561. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/read_only.py +0 -0
  562. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/redaction.py +0 -0
  563. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/renamed_tools.py +0 -0
  564. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  565. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  566. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  567. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
  568. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  569. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  570. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  571. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  572. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  573. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  574. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  575. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  576. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  577. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  578. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  579. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
  580. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  581. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/server.py +0 -0
  582. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/server_instructions.py +0 -0
  583. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/server_lifespan.py +0 -0
  584. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/server_tool_text.py +0 -0
  585. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/__init__.py +0 -0
  586. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  587. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  588. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  589. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/_handlers_oauth_callbacks.py +0 -0
  590. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  591. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  592. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  593. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  594. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  595. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  596. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  597. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/_theme.py +0 -0
  598. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  599. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  600. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  601. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  602. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  603. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  604. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  605. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  606. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  607. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  608. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  609. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  610. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  611. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  612. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  613. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  614. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  615. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/settings.css +0 -0
  616. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/settings.html +0 -0
  617. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
  618. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
  619. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
  620. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
  621. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
  622. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
  623. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
  624. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
  625. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/settings_ui/settings_js/10_oauth_callbacks.js +0 -0
  626. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/smoke_test.py +0 -0
  627. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  628. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/storage_helper_types.py +0 -0
  629. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/strict_bps.py +0 -0
  630. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tool_dispatch.py +0 -0
  631. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/__init__.py +0 -0
  632. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/addon_connection_hints.py +0 -0
  633. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/area_messages.py +0 -0
  634. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/automation_errors.py +0 -0
  635. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/backup_access.py +0 -0
  636. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/backup_snapshot.py +0 -0
  637. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/backup_snapshot_restore.py +0 -0
  638. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  639. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/best_practice_result.py +0 -0
  640. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  641. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  642. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  643. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/blueprint_write.py +0 -0
  644. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/bug_report_config.py +0 -0
  645. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/bug_report_redaction.py +0 -0
  646. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/bug_report_sources.py +0 -0
  647. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/bug_report_templates.py +0 -0
  648. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/bulk_selector.py +0 -0
  649. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/coercion.py +0 -0
  650. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/component_api.py +0 -0
  651. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/component_automation.py +0 -0
  652. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/component_config_entries.py +0 -0
  653. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/component_config_reads.py +0 -0
  654. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  655. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/component_devices.py +0 -0
  656. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/component_helper_collections.py +0 -0
  657. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/component_registries.py +0 -0
  658. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  659. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/component_todo.py +0 -0
  660. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_entry_backup.py +0 -0
  661. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  662. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  663. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
  664. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  665. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  666. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  667. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
  668. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  669. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_file_visibility.py +0 -0
  670. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
  671. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
  672. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_helpers/create.py +0 -0
  673. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
  674. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
  675. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_helpers/icon_route.py +0 -0
  676. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
  677. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
  678. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
  679. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
  680. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_helpers/update.py +0 -0
  681. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
  682. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
  683. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_write_errors.py +0 -0
  684. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/config_write_helpers.py +0 -0
  685. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/core_contract.py +0 -0
  686. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/dashboard_card_describe.py +0 -0
  687. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  688. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
  689. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/dashboard_read_errors.py +0 -0
  690. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/dev_backup.py +0 -0
  691. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/device_control.py +0 -0
  692. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/device_enrichment.py +0 -0
  693. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
  694. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/energy_preferences.py +0 -0
  695. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/entity_expose_batch.py +0 -0
  696. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
  697. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/entity_registration.py +0 -0
  698. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/entity_removal.py +0 -0
  699. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/entity_update_fields.py +0 -0
  700. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  701. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/flow_helper_lookup.py +0 -0
  702. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/hacs_backend.py +0 -0
  703. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/hacs_registration.py +0 -0
  704. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/helper_flows.py +0 -0
  705. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/helpers.py +0 -0
  706. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/history_response.py +0 -0
  707. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/integration_entry_state.py +0 -0
  708. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
  709. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/log_common.py +0 -0
  710. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/log_sources.py +0 -0
  711. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  712. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/log_sources_logbook.py +0 -0
  713. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  714. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/radio/__init__.py +0 -0
  715. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/radio/base.py +0 -0
  716. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/radio/matter.py +0 -0
  717. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/radio/thread.py +0 -0
  718. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  719. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/radio/zwave.py +0 -0
  720. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
  721. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/recorder_errors.py +0 -0
  722. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/reference_validator.py +0 -0
  723. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/registry.py +0 -0
  724. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  725. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/response_helpers.py +0 -0
  726. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/scene_discovery.py +0 -0
  727. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/search/__init__.py +0 -0
  728. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/search/base.py +0 -0
  729. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/search/component.py +0 -0
  730. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/search/entities.py +0 -0
  731. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/search/legacy.py +0 -0
  732. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/search/modes.py +0 -0
  733. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/search/overview.py +0 -0
  734. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/search/response.py +0 -0
  735. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/search/state.py +0 -0
  736. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/server_version.py +0 -0
  737. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  738. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  739. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  740. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  741. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  742. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  743. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  744. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  745. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  746. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  747. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/statistics_calendar.py +0 -0
  748. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/statistics_helpers.py +0 -0
  749. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/statistics_resets.py +0 -0
  750. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/system_restart.py +0 -0
  751. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tool_hints.py +0 -0
  752. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  753. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_addons.py +0 -0
  754. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_areas.py +0 -0
  755. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  756. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  757. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  758. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_calendar.py +0 -0
  759. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_camera.py +0 -0
  760. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_categories.py +0 -0
  761. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_code.py +0 -0
  762. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  763. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  764. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  765. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  766. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  767. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  768. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_dev.py +0 -0
  769. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_energy.py +0 -0
  770. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_entities.py +0 -0
  771. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_groups.py +0 -0
  772. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_hacs.py +0 -0
  773. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_history.py +0 -0
  774. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_integrations.py +0 -0
  775. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_labels.py +0 -0
  776. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_logs.py +0 -0
  777. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_radio.py +0 -0
  778. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_registry.py +0 -0
  779. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_resources.py +0 -0
  780. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_search.py +0 -0
  781. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  782. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_service.py +0 -0
  783. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_services.py +0 -0
  784. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_system.py +0 -0
  785. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_themes.py +0 -0
  786. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_todo.py +0 -0
  787. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_traces.py +0 -0
  788. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_updates.py +0 -0
  789. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_utility.py +0 -0
  790. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  791. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  792. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  793. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/tools_zones.py +0 -0
  794. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/update_categories.py +0 -0
  795. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/util_helpers.py +0 -0
  796. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/validation_middleware.py +0 -0
  797. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/tools/ws_waiters.py +0 -0
  798. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/transforms/__init__.py +0 -0
  799. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/transforms/categorized_search.py +0 -0
  800. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/transforms/compact_params.py +0 -0
  801. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/transforms/component_helpers.py +0 -0
  802. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/transforms/component_search.py +0 -0
  803. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  804. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  805. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/transport_security.py +0 -0
  806. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/update_check.py +0 -0
  807. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/__init__.py +0 -0
  808. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/config_hash.py +0 -0
  809. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/config_write_lock.py +0 -0
  810. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  811. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/data_paths.py +0 -0
  812. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  813. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/domain_handlers.py +0 -0
  814. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/entity_membership.py +0 -0
  815. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  816. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  817. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  818. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/operation_manager.py +0 -0
  819. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/python_sandbox.py +0 -0
  820. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  821. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/skill_loader.py +0 -0
  822. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/utils/usage_logger.py +0 -0
  823. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/visibility/__init__.py +0 -0
  824. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/visibility/config_files.py +0 -0
  825. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/visibility/enforcement.py +0 -0
  826. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/visibility/identifier_aliases.py +0 -0
  827. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/visibility/model.py +0 -0
  828. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/visibility/persistence.py +0 -0
  829. {ha_mcp_dev-9.1.0.dev3293 → ha_mcp_dev-9.1.0.dev3298}/src/ha_mcp/visibility/resolver.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 9.1.0.dev3293
3
+ Version: 9.1.0.dev3298
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Keywords: mcp,home-assistant,ai,automation,smart-home
6
6
  Author: Julien
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.1.0.dev3293"
7
+ version = "9.1.0.dev3298"
8
8
  description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13,<3.15"
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.1.0.dev3293"
7
+ version = "9.1.0.dev3298"
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
@@ -2747,6 +2747,7 @@ async def _fetch_file(client: Any, entity_id: str) -> Any:
2747
2747
  skips it instead of blocking the write or delete. Other read failures
2748
2748
  raise so the capture pipeline logs them at WARNING.
2749
2749
  """
2750
+ from .tools.auto_backup import PathNotAllowedError
2750
2751
  from .tools.tools_filesystem import call_mcp_tools_service
2751
2752
  from .tools.util_helpers import unwrap_service_response
2752
2753
 
@@ -2758,12 +2759,11 @@ async def _fetch_file(client: Any, entity_id: str) -> Any:
2758
2759
  content = result.get("content")
2759
2760
  return content if isinstance(content, str) else None
2760
2761
  error = str(result.get("error", ""))
2761
- if (
2762
- "does not exist" in error
2763
- or "not a file" in error
2764
- or "Cannot read binary file" in error
2765
- ):
2762
+ skips = ("does not exist", "not a file", "Cannot read binary file")
2763
+ if any(marker in error for marker in skips):
2766
2764
  return None
2765
+ if error.startswith("Path not allowed"):
2766
+ raise PathNotAllowedError(entity_id, error)
2767
2767
  raise HomeAssistantError(f"read_file failed for {entity_id!r}: {error}")
2768
2768
 
2769
2769
 
@@ -324,7 +324,7 @@
324
324
  "backup.bulk.in_use": "{count} backup(s) are in use. Retry after the active capture or restore finishes.",
325
325
  "backup.bulk.unknown": "The deletion result could not be confirmed. Check the backup list before retrying.",
326
326
  "filesystem.custom.title": "Custom filesystem paths (advanced)",
327
- "filesystem.custom.help": "Extra paths (one per line) that file tools may <strong>read and write</strong>. Config-relative paths, including exact filenames such as <code>sensor.yaml</code>, and paths under <code>/share</code>, <code>/media</code>, <code>/ssl</code>, and <code>/backup</code> are supported. Each entry allows that path and anything below it. Entries are matched literally; wildcards such as <code>*</code> are not supported. You can also manage these paths in Home Assistant under Settings → Devices & Services → HA-MCP Custom Component → HA-MCP File & YAML Tools → Configure; both locations edit the same setting and apply changes immediately.",
327
+ "filesystem.custom.help": "Extra paths (one per line) that file tools may <strong>read and write</strong>. Config-relative paths, including exact filenames such as <code>sensor.yaml</code>, and paths under <code>/share</code>, <code>/media</code>, and <code>/ssl</code> (read-only on HAOS and Supervised) are supported. Each entry allows that path and anything below it. Entries are matched literally; wildcards such as <code>*</code> are not supported. You can also manage these paths in Home Assistant under Settings → Devices & Services → HA-MCP Custom Component → HA-MCP File & YAML Tools → Configure; both locations edit the same setting and apply changes immediately.",
328
328
  "filesystem.custom.blocked": "Always blocked: {paths}, path traversal (<code>..</code>), and absolute paths outside allowed HAOS volumes.",
329
329
  "filesystem.custom.enable_first": "Enable beta features and filesystem tools above to edit.",
330
330
  "filesystem.custom.unavailable": "Custom paths are currently unavailable.",
@@ -197,8 +197,8 @@ function renderFsCustomPathsSubForm(parentEl, masterOn, fsOn) {
197
197
  : '.storage, secrets.yaml';
198
198
  info.innerHTML =
199
199
  `<div class="feature-name">${escapeHtml(t('filesystem.custom.title', {}, 'Custom filesystem paths (advanced)'))}</div>` +
200
- `<div class="feature-help">${tHtml('filesystem.custom.help', {}, 'Extra paths (one per line) that file tools may <strong>read and write</strong>. Config-relative paths, including exact filenames such as <code>sensor.yaml</code>, and paths under <code>/share</code>, <code>/media</code>, <code>/ssl</code>, and <code>/backup</code> are supported. Each entry allows that path and anything below it. You can also manage these paths in Home Assistant under Settings → Devices & Services → HA-MCP Custom Component → HA-MCP File & YAML Tools → Configure; both locations edit the same setting and apply changes immediately.')}</div>` +
201
- `<div class="feature-help">${tHtml('filesystem.custom.blocked', {paths: `<code>${escapeHtml(denyList)}</code>`}, 'Always blocked (cannot be added): {paths}, path traversal (<code>..</code>), and any absolute path outside the HAOS sibling volumes.')}</div>`;
200
+ `<div class="feature-help">${tHtml('filesystem.custom.help', {}, 'Extra paths (one per line) that file tools may <strong>read and write</strong>. Config-relative paths, including exact filenames such as <code>sensor.yaml</code>, and paths under <code>/share</code>, <code>/media</code>, and <code>/ssl</code> (read-only on HAOS and Supervised) are supported. Each entry allows that path and anything below it. Entries are matched literally; wildcards such as <code>*</code> are not supported. You can also manage these paths in Home Assistant under Settings → Devices & Services → HA-MCP Custom Component → HA-MCP File & YAML Tools → Configure; both locations edit the same setting and apply changes immediately.')}</div>` +
201
+ `<div class="feature-help">${tHtml('filesystem.custom.blocked', {paths: `<code>${escapeHtml(denyList)}</code>`}, 'Always blocked: {paths}, path traversal (<code>..</code>), and absolute paths outside allowed HAOS volumes.')}</div>`;
202
202
 
203
203
  const control = document.createElement('div');
204
204
  control.className = 'feature-control';
@@ -42,7 +42,7 @@ from ..backup_manager import (
42
42
  get_backup_manager,
43
43
  )
44
44
  from ..config import get_global_settings
45
- from ..errors import ErrorCode, create_error_response
45
+ from ..errors import TOOL_ERROR_LOG_LEVEL, ErrorCode, create_error_response
46
46
  from .helpers import raise_tool_error
47
47
 
48
48
  logger = logging.getLogger(__name__)
@@ -55,17 +55,126 @@ logger = logging.getLogger(__name__)
55
55
  _DECORATOR_TRANSIENT_ERRORS = _CAPTURE_TRANSIENT_ERRORS
56
56
 
57
57
 
58
- def _component_not_installed_cause(err: BaseException) -> ToolError | None:
59
- """Return the ``COMPONENT_NOT_INSTALLED`` ToolError behind a capture failure.
58
+ class PathNotAllowedError(ToolError):
59
+ """The File & YAML Tools component refused the file path itself.
60
+
61
+ Raised by the ``file`` capture's read. The write and delete allowlist is a
62
+ subset of the read gate, so a path the read refuses, the wrapped write or
63
+ delete would refuse too (#2908). The message names no operation and leaves
64
+ out the component's read allowlist, which would mislead a write; the
65
+ component's own text stays in ``context``.
66
+ """
67
+
68
+ def __init__(
69
+ self,
70
+ path: str,
71
+ component_error: str,
72
+ *,
73
+ message: str | None = None,
74
+ suggestions: list[str] | None = None,
75
+ context: dict[str, Any] | None = None,
76
+ ) -> None:
77
+ self.path = path
78
+ self.component_error = component_error
79
+ super().__init__(
80
+ json.dumps(
81
+ create_error_response(
82
+ ErrorCode.VALIDATION_INVALID_PARAMETER,
83
+ message or f"Path not allowed: {path}",
84
+ suggestions=suggestions or _custom_path_suggestions(path),
85
+ context={
86
+ **(context or {}),
87
+ "path": path,
88
+ "component_error": component_error,
89
+ },
90
+ ),
91
+ indent=2,
92
+ default=str,
93
+ ),
94
+ log_level=TOOL_ERROR_LOG_LEVEL,
95
+ )
96
+
97
+
98
+ # The component's volume roots and deny floor, which it doesn't publish to the
99
+ # server on a refusal (custom_components/ha_mcp_tools/const.py: ALLOWED_VOLUME_
100
+ # ROOTS, DENY_PATH_SEGMENTS, DENY_READ_BASENAMES). A unit test pins the copies.
101
+ _VOLUME_ROOTS = ("/share", "/media", "/ssl")
102
+ _DENY_SEGMENTS = frozenset({".storage"})
103
+ _DENY_BASENAMES = frozenset({"secrets.yaml", "approval_pin.json"})
104
+
105
+
106
+ def _custom_path_suggestions(path: str) -> list[str]:
107
+ """Suggest a custom path only where the settings UI can accept one."""
108
+ parts = path.lower().split("/")
109
+ if _DENY_SEGMENTS.intersection(parts) or parts[-1] in _DENY_BASENAMES:
110
+ return ["This path is never available to the file tools"]
111
+ if path.startswith("/") and not any(
112
+ path == root or path.startswith(root + "/") for root in _VOLUME_ROOTS
113
+ ):
114
+ return [
115
+ "Custom filesystem paths accept absolute paths only under "
116
+ f"{', '.join(_VOLUME_ROOTS)}; this one cannot be allowed"
117
+ ]
118
+ return [
119
+ "If it isn't listed already, add it or a folder above it under "
120
+ "Custom filesystem paths in the ha-mcp settings UI"
121
+ ]
122
+
123
+
124
+ def path_refusal(err: BaseException) -> PathNotAllowedError | None:
125
+ """The component's path refusal that is, or caused, ``err``; else ``None``."""
126
+ if isinstance(err, PathNotAllowedError):
127
+ return err
128
+ cause = _component_refusal_cause(err)
129
+ return cause if isinstance(cause, PathNotAllowedError) else None
130
+
131
+
132
+ def raise_if_snapshot_path_refused(
133
+ err: BaseException, action: str, backup_name: str, data: Any = None
134
+ ) -> None:
135
+ """Re-frame a refused live-file read during a diff or restore of a snapshot.
136
+
137
+ A snapshot of a path that is no longer allowed (a removed custom path, or
138
+ any ``/backup`` path after #2875) can't be compared with or written back to
139
+ its live file. Say that, instead of the write-oriented path refusal. A
140
+ restore passes its outcome as ``data``, so callers still see that nothing
141
+ was applied. (On-demand create has no snapshot yet and reports the plain
142
+ refusal.)
143
+ """
144
+ refusal = path_refusal(err)
145
+ if refusal is None:
146
+ return
147
+ raise PathNotAllowedError(
148
+ refusal.path,
149
+ refusal.component_error,
150
+ message=(
151
+ f"Cannot {action} {backup_name!r}: its live file {refusal.path} is "
152
+ "no longer readable through the file tools (the path is not allowed)"
153
+ ),
154
+ suggestions=[
155
+ "View the snapshot with ha_manage_backup(scope='edits', "
156
+ f"action='view', backup_name={backup_name!r}) to recover its content",
157
+ *_custom_path_suggestions(refusal.path),
158
+ ],
159
+ context={
160
+ "backup_name": backup_name,
161
+ "action": action,
162
+ **({"data": data} if data is not None else {}),
163
+ },
164
+ ) from None
165
+
166
+
167
+ def _component_refusal_cause(err: BaseException) -> ToolError | None:
168
+ """Return the component's own refusal behind a capture failure.
60
169
 
61
170
  A mandatory pre-write snapshot reads the current content through the same
62
- File & YAML Tools services the wrapped write needs, so on an install
63
- without that config entry the capture fails FIRST and the write would be
64
- refused as ``BACKUP_CAPTURE_FAILED`` — burying the actionable "add the
65
- entry" guidance one level deep (#2292). Walk the cause chain for the
66
- original structured error so the caller can surface it unchanged: retrying
67
- the backup cannot succeed, and the remediation is the component's, not the
68
- backup pipeline's.
171
+ File & YAML Tools services the wrapped write needs, so when the component
172
+ refuses the call the capture fails FIRST and the write would be refused as
173
+ ``BACKUP_CAPTURE_FAILED``, burying the real error one level deep. Two
174
+ refusals are surfaced unchanged: ``COMPONENT_NOT_INSTALLED`` (no tools
175
+ entry, #2292) and ``PathNotAllowedError`` (the path is outside the
176
+ allowlist, #2908). Retrying the backup cannot succeed for either, and the
177
+ remediation is the component's, not the backup pipeline's.
69
178
  """
70
179
  seen: set[int] = set()
71
180
  # Worklist over BOTH chain links: an explicit ``raise ... from other``
@@ -79,6 +188,8 @@ def _component_not_installed_cause(err: BaseException) -> ToolError | None:
79
188
  if id(cause) in seen:
80
189
  continue
81
190
  seen.add(id(cause))
191
+ if isinstance(cause, PathNotAllowedError):
192
+ return cause
82
193
  if isinstance(cause, ToolError):
83
194
  try:
84
195
  payload = json.loads(str(cause))
@@ -389,19 +500,18 @@ async def _capture_pre_write_snapshot(
389
500
  # wrapped write never runs, so nothing has been changed.
390
501
  # The ToolError this raises propagates rather than being
391
502
  # swallowed by the best-effort handler below.
392
- component_error = _component_not_installed_cause(err)
503
+ component_error = _component_refusal_cause(err)
393
504
  if component_error is not None:
394
- # The capture failed because the File & YAML Tools entry is
395
- # not set up — the same reason the wrapped write itself would
396
- # refuse. Surface that actionable error (add the entry), not a
397
- # backup complaint (#2292). The write is still blocked. ``from
398
- # None`` because this IS the underlying error being unwrapped;
399
- # chaining it back onto the wrapper it came out of would only
400
- # print the chain twice (and B904 wants the intent explicit).
401
- # ``from None`` also drops the wrapper's own text from the
402
- # traceback, so record it here or the only account of WHICH
403
- # mandatory capture was re-pointed at the component error is
404
- # gone.
505
+ # The capture failed because the component refused the call —
506
+ # the same reason the wrapped write itself would refuse. Surface
507
+ # that actionable error, not a backup complaint (#2292, #2908).
508
+ # The write is still blocked. ``from None`` because this IS the
509
+ # underlying error being unwrapped; chaining it back onto the
510
+ # wrapper it came out of would only print the chain twice (and
511
+ # B904 wants the intent explicit). ``from None`` also drops the
512
+ # wrapper's own text from the traceback, so record it here or
513
+ # the only account of WHICH mandatory capture was re-pointed at
514
+ # the component error is gone.
405
515
  logger.warning(
406
516
  "Auto-backup: mandatory capture for '%s' failed (%s) — "
407
517
  "surfacing the underlying component error instead; the "
@@ -39,6 +39,7 @@ from ..backup_todo import TodoListNotLoaded
39
39
  from ..client.rest_client import HomeAssistantClient
40
40
  from ..config import get_global_settings
41
41
  from ..errors import ErrorCode, create_error_response
42
+ from .auto_backup import raise_if_snapshot_path_refused
42
43
  from .backup_access import (
43
44
  gate_backup_combo as _gate_combo,
44
45
  )
@@ -552,7 +553,8 @@ async def _edits_diff(
552
553
  context={"backup_name": bname},
553
554
  )
554
555
  )
555
- except ToolError:
556
+ except ToolError as err:
557
+ raise_if_snapshot_path_refused(err, "diff", bname)
556
558
  raise
557
559
  except Exception as err: # noqa: BLE001
558
560
  # Fetching the live config for diff goes through the
@@ -649,26 +651,28 @@ async def _edits_restore(
649
651
  # failed — the overwrite was blocked, nothing changed. Same
650
652
  # fail-closed contract + error code as the @with_auto_backup write
651
653
  # path (#1579), so callers see one consistent failure mode.
654
+ not_applied = {
655
+ "restored_from": bname,
656
+ "safety_backup": None,
657
+ "apply_status": "not_applied",
658
+ "verification_status": "not_run",
659
+ }
660
+ # Its live file's path is no longer allowed: retrying can't help.
661
+ raise_if_snapshot_path_refused(err, "restore", bname, not_applied)
652
662
  logger.warning("Restore of %s blocked: %s", bname, err.safe_cause)
653
663
  raise_tool_error(
654
664
  create_error_response(
655
665
  ErrorCode.BACKUP_CAPTURE_FAILED,
656
666
  "Restore blocked: the pre-restore safety snapshot could not be "
657
667
  f"captured ({err.safe_cause}). Nothing was changed.",
658
- context={
659
- "backup_name": bname,
660
- "data": {
661
- "restored_from": bname,
662
- "safety_backup": None,
663
- "apply_status": "not_applied",
664
- "verification_status": "not_run",
665
- },
666
- },
668
+ context={"backup_name": bname, "data": not_applied},
667
669
  suggestions=err.suggestions
668
670
  or ["Retry once the underlying issue is resolved"],
669
671
  )
670
672
  )
671
- except ToolError:
673
+ except ToolError as err:
674
+ outcome = getattr(err, "restore_outcome", None)
675
+ raise_if_snapshot_path_refused(err, "restore", bname, outcome)
672
676
  raise
673
677
  except Exception as err: # noqa: BLE001
674
678
  # ``handler.restore`` is domain-specific and can surface HA-side
@@ -4,6 +4,7 @@ from pathlib import Path
4
4
 
5
5
  from ..backup_manager import BackupManager, MandatoryBackupError, _is_flow_helper_domain
6
6
  from ..errors import ErrorCode, create_error_response
7
+ from .auto_backup import path_refusal
7
8
  from .helper_flows import require_helper_type
8
9
  from .helpers import raise_tool_error
9
10
 
@@ -27,6 +28,8 @@ async def capture_on_demand(mgr: BackupManager, domain: str, entity_id: str) ->
27
28
  mandatory=True,
28
29
  )
29
30
  except MandatoryBackupError as err:
31
+ if (refusal := path_refusal(err)) is not None:
32
+ raise refusal from None # the path itself is refused; not retryable
30
33
  cause = err.__cause__
31
34
  raise_tool_error(
32
35
  create_error_response(
@@ -580,7 +580,7 @@ class FilesystemTools:
580
580
  - `packages/`, plus the folder bound by `homeassistant: packages:` when
581
581
  it has another name
582
582
  - Plus any custom directories OR HAOS sibling volumes (`/share`,
583
- `/media`, `/ssl`, `/backup`) configured in the ha-mcp settings UI
583
+ `/media`, `/ssl`) configured in the ha-mcp settings UI
584
584
  Path traversal (../) is blocked.
585
585
 
586
586
  EXAMPLE: ha_list_files(path="www/", pattern="*.css")
@@ -696,7 +696,7 @@ class FilesystemTools:
696
696
  - `www/**`, `themes/**`, `custom_templates/**`, `dashboards/**`, `blueprints/**`
697
697
  - `custom_components/**/*.py` (read-only)
698
698
  - Plus any custom directories OR HAOS sibling volumes (`/share`,
699
- `/media`, `/ssl`, `/backup`) configured in the ha-mcp settings UI
699
+ `/media`, `/ssl`) configured in the ha-mcp settings UI
700
700
  Path traversal (../) is blocked.
701
701
 
702
702
  EXAMPLE: ha_read_file(path="packages/alert2.yaml", yaml_path="alert2")
@@ -797,8 +797,8 @@ class FilesystemTools:
797
797
  - `themes/` - Theme YAML files
798
798
  - `custom_templates/` - Jinja2 template files
799
799
  - `dashboards/` - YAML-mode dashboard files
800
- - Plus any custom directories OR HAOS sibling volumes (`/share`,
801
- `/media`, `/ssl`, `/backup`) configured in the ha-mcp settings UI
800
+ - Plus custom directories OR HAOS sibling volumes (`/share`, `/media`, `/ssl`)
801
+ from the ha-mcp settings UI; `/ssl` is read-only on HAOS and Supervised
802
802
  Configuration files (configuration.yaml, etc.) cannot be written; path
803
803
  traversal (../) is blocked.
804
804
 
@@ -887,9 +887,9 @@ class FilesystemTools:
887
887
  recent auto-backup snapshot; a binary file has no snapshot and its
888
888
  deletion is permanent. Allowed directories:
889
889
  `www/`, `themes/`, `custom_templates/`, `dashboards/`, plus any custom
890
- directories OR HAOS sibling volumes (`/share`, `/media`, `/ssl`,
891
- `/backup`) configured in the ha-mcp settings UI. Configuration files
892
- cannot be deleted; path traversal (../) is blocked.
890
+ directories OR HAOS sibling volumes (`/share`, `/media`, `/ssl`) configured
891
+ in the ha-mcp settings UI; `/ssl` is read-only on HAOS and Supervised.
892
+ Configuration files cannot be deleted; path traversal (../) is blocked.
893
893
 
894
894
  EXAMPLE: ha_delete_file(path="www/deprecated-style.css", confirm=True)
895
895
  """