ha-mcp-dev 8.6.0.dev2833__tar.gz → 8.6.0.dev2837__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 (704) hide show
  1. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/PKG-INFO +1 -1
  2. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/pyproject.toml +4 -1
  3. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/pyproject.toml.orig +7 -1
  4. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/__main__.py +5 -5
  5. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_rich_compat.py +1 -1
  6. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_version.py +1 -1
  7. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/backup_manager.py +1 -1
  8. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/client/rest_client.py +2 -2
  9. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/client/websocket_client.py +7 -7
  10. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/client/websocket_listener.py +5 -5
  11. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/dashboard_screenshot/content.py +1 -1
  12. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/dashboard_screenshot/paths.py +1 -1
  13. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/dashboard_screenshot/theme_guard.py +4 -4
  14. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/hacs_auto_refresh.py +1 -1
  15. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/server.py +1 -1
  16. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/_handlers_fs.py +2 -2
  17. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/_handlers_server.py +2 -2
  18. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/_supervisor.py +1 -1
  19. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/smoke_test.py +3 -3
  20. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/backup.py +7 -7
  21. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/blueprint_sources.py +3 -3
  22. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/component_config_entries.py +2 -2
  23. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/component_config_reads.py +2 -2
  24. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/component_dashboard_edit.py +1 -1
  25. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/component_devices.py +2 -2
  26. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/component_registries.py +1 -1
  27. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/component_registry_lookup.py +2 -2
  28. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/config_entry_flow.py +7 -7
  29. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/config_entry_flow_walker.py +2 -2
  30. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/config_entry_reconfigure.py +2 -2
  31. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/config_entry_reload_watch.py +1 -1
  32. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/device_control.py +6 -6
  33. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/helpers.py +1 -1
  34. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/integration_reconfigure.py +1 -1
  35. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/log_sources.py +62 -0
  36. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/registry.py +1 -1
  37. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/scene_discovery.py +1 -1
  38. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/smart_search/_deep.py +6 -6
  39. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/smart_search/_graph.py +1 -1
  40. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/smart_search/_scenes.py +2 -2
  41. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_addons.py +1 -1
  42. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_areas.py +4 -4
  43. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_assist_pipeline.py +1 -1
  44. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_blueprints.py +1 -1
  45. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_bug_report.py +15 -15
  46. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_calendar.py +3 -3
  47. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_categories.py +3 -3
  48. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_code.py +2 -2
  49. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_config_automations.py +5 -5
  50. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_config_dashboards.py +7 -7
  51. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_config_helpers.py +10 -10
  52. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_config_scenes.py +1 -1
  53. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_config_scripts.py +4 -4
  54. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_dashboard_screenshot.py +2 -2
  55. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_dev.py +9 -9
  56. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_energy.py +5 -5
  57. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_entities.py +4 -4
  58. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_filesystem.py +4 -4
  59. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_groups.py +3 -3
  60. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_hacs.py +2 -2
  61. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_history.py +1 -1
  62. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_integrations.py +15 -15
  63. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_labels.py +4 -4
  64. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_logs.py +15 -6
  65. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_radio.py +1 -1
  66. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_registry.py +3 -3
  67. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_resources.py +3 -3
  68. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_search.py +9 -9
  69. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_security_policy.py +1 -1
  70. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_service.py +8 -8
  71. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_services.py +2 -2
  72. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_system.py +14 -14
  73. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_themes.py +1 -1
  74. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_traces.py +4 -4
  75. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_updates.py +5 -5
  76. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_voice_assistant.py +2 -2
  77. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_yaml_config.py +3 -3
  78. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_yaml_read.py +1 -1
  79. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_zones.py +4 -4
  80. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/util_helpers.py +3 -3
  81. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/update_check.py +2 -2
  82. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/kill_signal_diagnostics.py +3 -3
  83. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/usage_logger.py +4 -4
  84. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/visibility/enforcement.py +1 -1
  85. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/visibility/resolver.py +3 -3
  86. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/LICENSE +0 -0
  87. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/README.md +0 -0
  88. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/__init__.py +0 -0
  89. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_pypi_marker +0 -0
  90. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/__init__.py +0 -0
  91. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  92. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  93. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  94. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  95. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  96. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  97. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  98. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  99. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  100. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  101. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  102. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  103. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  104. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  105. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  106. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  107. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  108. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  109. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  110. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  111. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  112. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  113. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  114. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  115. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  116. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  117. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  118. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  119. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  120. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  121. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  122. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  123. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  124. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  125. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  126. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  127. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  128. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  129. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  130. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  131. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  132. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  133. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  134. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  135. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  136. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  137. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  138. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  139. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  140. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  141. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  142. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  143. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  144. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  145. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  146. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  147. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  148. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  149. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  150. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  151. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  152. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  153. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  154. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  155. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  156. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  157. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  158. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  159. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  160. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  161. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  162. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  163. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  164. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  165. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  166. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  167. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  168. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  169. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  170. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  171. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  172. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  173. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  174. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  175. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  176. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  177. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  178. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  179. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  180. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  181. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  182. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  183. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  184. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  185. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  186. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  187. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  188. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  189. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  190. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  191. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  192. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  193. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  194. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  195. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  196. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  197. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  198. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  199. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  200. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  201. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  202. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  203. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  204. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  205. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  206. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  207. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  208. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  209. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  210. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  211. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  212. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  213. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  214. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  215. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  216. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  217. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  218. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  219. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  220. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  221. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  222. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  223. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  224. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  225. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  226. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  227. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  228. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  229. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  230. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  231. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  232. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  233. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  234. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  235. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  236. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  237. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  238. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  239. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  240. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  241. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  242. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  243. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  244. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  245. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  246. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  247. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  248. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  249. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  250. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  251. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  252. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  253. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  254. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  255. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  256. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  257. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  258. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  259. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  260. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  261. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  262. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  263. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  264. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  265. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  266. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  267. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  268. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  269. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  270. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  271. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  272. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  273. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  274. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  275. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  276. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  277. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  278. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  279. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  280. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  281. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  282. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  283. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  284. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  285. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  286. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  287. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  288. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  289. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  290. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  291. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  292. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  293. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  294. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  295. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  296. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  297. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  298. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  299. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  300. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  301. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  302. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  303. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  304. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  305. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  306. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  307. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  308. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  309. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  310. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  311. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  312. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  313. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  314. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  315. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  316. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  317. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  318. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  319. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  320. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  321. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  322. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  323. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  324. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  325. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  326. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  327. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  328. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  329. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  330. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  331. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  332. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  333. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  334. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  335. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  336. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  337. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  338. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  339. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  340. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  341. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  342. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  343. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  344. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  345. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  346. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  347. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  348. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  349. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  350. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  351. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  352. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  353. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  354. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  355. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  356. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  357. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  358. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  359. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  360. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  361. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  362. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  363. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  364. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  365. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  366. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  367. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  368. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  369. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  370. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  371. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  372. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  373. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  374. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  375. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  376. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  377. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  378. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  379. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  380. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  381. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  382. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  383. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  384. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  385. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  386. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  387. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  388. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  389. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  390. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  391. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  392. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  393. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  394. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  395. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  396. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  397. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  398. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  399. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  400. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  401. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  402. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  403. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  404. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  405. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  406. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  407. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  408. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  409. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  410. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  411. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  412. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  413. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  414. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  415. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  416. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  417. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  418. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  419. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  420. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  421. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  422. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  423. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  424. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  425. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  426. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  427. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  428. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  429. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  430. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  431. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  432. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  433. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  434. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  435. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  436. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  437. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  438. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  439. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  440. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  441. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  442. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  443. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  444. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  445. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  446. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  447. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  448. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  449. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  450. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  451. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  452. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  453. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  454. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  455. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  456. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  457. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  458. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  459. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  460. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  461. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  462. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  463. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  464. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  465. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  466. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  467. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  468. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  469. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  470. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  471. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  472. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  473. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  474. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  475. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  476. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  477. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  478. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  479. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  480. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  481. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  482. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  483. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  484. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  485. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  486. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  487. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  488. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  489. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  490. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  491. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  492. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  493. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  494. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  495. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  496. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  497. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  498. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  499. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  500. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  501. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/requirements.txt +0 -0
  502. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  503. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  504. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  505. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  506. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  507. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  508. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  509. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  510. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  511. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  512. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  513. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  514. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  515. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  516. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  517. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  518. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  519. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  520. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  521. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  522. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  523. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  524. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  525. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  526. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  527. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  528. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  529. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  530. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  531. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  532. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  533. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  534. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  535. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  536. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  537. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  538. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  539. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  540. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  541. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  542. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  543. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  544. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  545. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  546. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  547. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  548. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  549. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  550. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  551. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  552. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  553. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  554. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  555. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  556. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  557. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  558. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/auth/__init__.py +0 -0
  559. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/auth/consent_form.py +0 -0
  560. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/auth/oidc_compat.py +0 -0
  561. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/auth/provider.py +0 -0
  562. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/browser_landing.py +0 -0
  563. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/client/__init__.py +0 -0
  564. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/client/admin_routes.py +0 -0
  565. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/client/supervisor_client.py +0 -0
  566. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/config.py +0 -0
  567. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  568. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  569. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  570. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/errors.py +0 -0
  571. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/ha_request_queue.py +0 -0
  572. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/http_transport.py +0 -0
  573. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/llm_exposure.py +0 -0
  574. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/log_filters.py +0 -0
  575. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/policy/__init__.py +0 -0
  576. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/policy/approval_queue.py +0 -0
  577. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/policy/decision_pin.py +0 -0
  578. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/policy/decisions.py +0 -0
  579. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/policy/editing.py +0 -0
  580. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/policy/evaluator.py +0 -0
  581. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/policy/events.py +0 -0
  582. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/policy/handlers.py +0 -0
  583. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/policy/middleware.py +0 -0
  584. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/policy/model.py +0 -0
  585. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/policy/persistence.py +0 -0
  586. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/policy/value_sources.py +0 -0
  587. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/py.typed +0 -0
  588. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/read_only.py +0 -0
  589. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/redaction.py +0 -0
  590. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/renamed_tools.py +0 -0
  591. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  592. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  593. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  594. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
  595. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  596. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  597. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  598. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  599. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  600. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  601. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  602. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  603. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  604. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  605. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  606. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
  607. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  608. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/server_lifespan.py +0 -0
  609. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/__init__.py +0 -0
  610. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  611. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  612. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  613. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  614. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  615. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  616. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  617. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/_theme.py +0 -0
  618. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  619. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  620. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  621. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  622. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  623. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  624. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  625. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  626. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  627. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  628. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  629. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  630. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  631. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  632. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  633. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  634. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  635. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  636. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/settings.css +0 -0
  637. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/settings.html +0 -0
  638. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/settings_ui/settings.js +0 -0
  639. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  640. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/strict_bps.py +0 -0
  641. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tool_dispatch.py +0 -0
  642. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/__init__.py +0 -0
  643. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/auto_backup.py +0 -0
  644. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  645. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/best_practice_result.py +0 -0
  646. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  647. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  648. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/blueprint_write.py +0 -0
  649. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/bulk_selector.py +0 -0
  650. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/component_api.py +0 -0
  651. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  652. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  653. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  654. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  655. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
  656. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/entity_registration.py +0 -0
  657. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  658. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/hacs_registration.py +0 -0
  659. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/log_common.py +0 -0
  660. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  661. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  662. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/radio/__init__.py +0 -0
  663. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/radio/base.py +0 -0
  664. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/radio/matter.py +0 -0
  665. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/radio/thread.py +0 -0
  666. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  667. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/radio/zwave.py +0 -0
  668. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/reference_validator.py +0 -0
  669. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  670. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  671. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  672. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  673. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  674. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  675. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  676. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  677. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  678. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_camera.py +0 -0
  679. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_todo.py +0 -0
  680. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/tools_utility.py +0 -0
  681. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/tools/validation_middleware.py +0 -0
  682. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/transforms/__init__.py +0 -0
  683. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/transforms/categorized_search.py +0 -0
  684. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/transforms/component_search.py +0 -0
  685. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  686. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  687. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/transport_security.py +0 -0
  688. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/__init__.py +0 -0
  689. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/config_hash.py +0 -0
  690. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/config_write_lock.py +0 -0
  691. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  692. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/data_paths.py +0 -0
  693. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  694. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/domain_handlers.py +0 -0
  695. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/entity_membership.py +0 -0
  696. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  697. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  698. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/operation_manager.py +0 -0
  699. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/python_sandbox.py +0 -0
  700. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  701. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/utils/skill_loader.py +0 -0
  702. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/visibility/__init__.py +0 -0
  703. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/visibility/model.py +0 -0
  704. {ha_mcp_dev-8.6.0.dev2833 → ha_mcp_dev-8.6.0.dev2837}/src/ha_mcp/visibility/persistence.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 8.6.0.dev2833
3
+ Version: 8.6.0.dev2837
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Keywords: mcp,home-assistant,ai,automation,smart-home
6
6
  Author: Julien
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "8.6.0.dev2833"
7
+ version = "8.6.0.dev2837"
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"
@@ -156,6 +156,7 @@ select = [
156
156
  "LOG",
157
157
  "SIM",
158
158
  "PLE",
159
+ "BLE001",
159
160
  "PLC0206",
160
161
  "PLC0207",
161
162
  "PLR0402",
@@ -189,6 +190,8 @@ ignore = [
189
190
  [tool.ruff.lint.per-file-ignores]
190
191
  "__init__.py" = ["F401"]
191
192
  "tests/**/*" = ["B011"]
193
+ "homeassistant-addon-webhook-proxy/start.py" = ["BLE001"]
194
+ "homeassistant-addon-webhook-proxy-dev/start.py" = ["BLE001"]
192
195
 
193
196
  [tool.pytest.ini_options]
194
197
  testpaths = ["tests"]
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "8.6.0.dev2833"
7
+ version = "8.6.0.dev2837"
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
@@ -204,6 +204,7 @@ select = [
204
204
  "LOG", # logging best practices
205
205
  "SIM", # simplify
206
206
  "PLE", # pylint errors (real bugs: bad logging args, await outside async)
207
+ "BLE001", # blind except: catches Exception without re-raising or logging the traceback
207
208
  # Targeted pylint conventions/refactors/warnings. The PL family is NOT
208
209
  # selected wholesale: PLC0415 (import-outside-top-level) fights the
209
210
  # deliberate lazy-init architecture, and PLR2004 (magic values),
@@ -249,6 +250,11 @@ ignore = [
249
250
  # list was fully cleared by issue #925). Do NOT add "path" = ["C901"] entries
250
251
  # here — extract helpers to bring the function below the threshold instead:
251
252
  # "some/path.py" = ["C901"] <- never this
253
+ # Every other blind except carries an inline noqa, which RUF100 fails once it
254
+ # is unused. These two are exempt here because a pull request cannot edit the
255
+ # stable tree, and an edit to the dev tree needs an app version bump.
256
+ "homeassistant-addon-webhook-proxy/start.py" = ["BLE001"]
257
+ "homeassistant-addon-webhook-proxy-dev/start.py" = ["BLE001"]
252
258
 
253
259
  [tool.pytest.ini_options]
254
260
  testpaths = ["tests"]
@@ -534,7 +534,7 @@ async def _cleanup_resources() -> None:
534
534
  logger.debug("WebSocket listener stopped")
535
535
  except ImportError:
536
536
  logger.debug("WebSocket listener module not available")
537
- except Exception as e:
537
+ except Exception as e: # noqa: BLE001
538
538
  logger.warning(f"WebSocket listener cleanup failed: {e}")
539
539
 
540
540
  # Close WebSocket manager connections
@@ -545,7 +545,7 @@ async def _cleanup_resources() -> None:
545
545
  logger.debug("WebSocket manager disconnected")
546
546
  except ImportError:
547
547
  logger.debug("WebSocket manager module not available")
548
- except Exception as e:
548
+ except Exception as e: # noqa: BLE001
549
549
  logger.warning(f"WebSocket manager cleanup failed: {e}")
550
550
 
551
551
  # Close the server's HTTP client
@@ -553,7 +553,7 @@ async def _cleanup_resources() -> None:
553
553
  try:
554
554
  await _server.close()
555
555
  logger.debug("Server closed")
556
- except Exception as e:
556
+ except Exception as e: # noqa: BLE001
557
557
  logger.warning(f"Server cleanup failed: {e}")
558
558
 
559
559
  logger.info("Server resources cleaned up")
@@ -676,7 +676,7 @@ async def _run_with_shutdown(server_coro: Coroutine[Any, Any, Any]) -> None:
676
676
 
677
677
  try:
678
678
  await _cancel_tasks(server_task, shutdown_task)
679
- except Exception as e:
679
+ except Exception as e: # noqa: BLE001
680
680
  # Teardown must never mask the exception being propagated from the
681
681
  # try block (Python drops the original if finally raises).
682
682
  logger.warning(f"Task cancellation during shutdown failed: {e}")
@@ -780,7 +780,7 @@ def _force_exit(code: int) -> NoReturn:
780
780
  for stream in (sys.stdout, sys.stderr):
781
781
  try:
782
782
  stream.flush()
783
- except Exception: # nothing actionable at exit
783
+ except Exception: # nothing actionable at exit # noqa: BLE001
784
784
  pass
785
785
 
786
786
  try:
@@ -55,7 +55,7 @@ def ensure_rich_handler_compat() -> bool:
55
55
  """
56
56
  try:
57
57
  from rich.logging import RichHandler
58
- except Exception: # pragma: no cover - rich absent or broken
58
+ except Exception: # pragma: no cover - rich absent or broken # noqa: BLE001
59
59
  # fastmcp depends on rich, so this means the import would fail anyway
60
60
  # for reasons this shim cannot address.
61
61
  logger.debug("rich.logging unavailable; skipping RichHandler shim")
@@ -42,7 +42,7 @@ def get_version() -> str:
42
42
  owners = [name for name in _CHANNEL_DISTS if _owns_ha_mcp(name)]
43
43
  if len(owners) == 1:
44
44
  return importlib.metadata.version(owners[0])
45
- except Exception as exc:
45
+ except Exception as exc: # noqa: BLE001
46
46
  logger.debug("distribution ownership probe failed: %s", exc)
47
47
  for pkg_name in _CHANNEL_DISTS:
48
48
  try:
@@ -470,7 +470,7 @@ async def _await_backup_io[T](operation: Callable[..., T], *args: Any) -> T:
470
470
  await asyncio.shield(worker)
471
471
  except asyncio.CancelledError:
472
472
  continue # Repeated cancellation must not release the lock early.
473
- except Exception:
473
+ except Exception: # noqa: BLE001
474
474
  break # Consume the worker failure below; preserve cancellation.
475
475
  if not worker.cancelled():
476
476
  worker.exception()
@@ -445,7 +445,7 @@ class HomeAssistantClient:
445
445
  """
446
446
  try:
447
447
  error_data = response.json()
448
- except Exception:
448
+ except Exception: # noqa: BLE001
449
449
  error_data = {"message": response.text}
450
450
 
451
451
  message = error_data.get("message")
@@ -1459,7 +1459,7 @@ class HomeAssistantClient:
1459
1459
  return True, None
1460
1460
  else:
1461
1461
  return False, "Invalid response from Home Assistant"
1462
- except Exception as e:
1462
+ except Exception as e: # noqa: BLE001
1463
1463
  # Intentional broad-catch: is_connected() contract maps any failure
1464
1464
  # to (False, error_msg); styleguide § "broad except at top-level
1465
1465
  # setup/teardown handlers" applies (connection probe is the analog).
@@ -377,7 +377,7 @@ class HomeAssistantWebSocketClient:
377
377
  if verify_ssl is None:
378
378
  try:
379
379
  verify_ssl = get_global_settings().verify_ssl
380
- except Exception as e:
380
+ except Exception as e: # noqa: BLE001
381
381
  # A bad env var elsewhere should not silently flip TLS off:
382
382
  # log which key tripped and fall back to the secure default.
383
383
  logger.warning(
@@ -496,7 +496,7 @@ class HomeAssistantWebSocketClient:
496
496
  logger.info("WebSocket connected and authenticated successfully")
497
497
  return True
498
498
 
499
- except Exception as e:
499
+ except Exception as e: # noqa: BLE001
500
500
  self._last_connect_error = f"{type(e).__name__}: {e}"
501
501
  self._last_connect_exception = e
502
502
  if _is_ssl_error(e) and self.verify_ssl:
@@ -583,7 +583,7 @@ class HomeAssistantWebSocketClient:
583
583
  await self._process_message(data)
584
584
  except json.JSONDecodeError as e:
585
585
  logger.error(f"Invalid JSON received: {e}")
586
- except Exception as e:
586
+ except Exception as e: # noqa: BLE001
587
587
  logger.error(f"Error processing message: {e}")
588
588
  except websockets.exceptions.ConnectionClosed as e:
589
589
  # Prefer the frame we received (the peer closed on us); fall
@@ -604,7 +604,7 @@ class HomeAssistantWebSocketClient:
604
604
  logger.warning(log_message)
605
605
  else:
606
606
  logger.info(log_message)
607
- except Exception as e:
607
+ except Exception as e: # noqa: BLE001
608
608
  close_reason = str(e)
609
609
  logger.error(f"WebSocket message handler error: {e}")
610
610
  finally:
@@ -1110,7 +1110,7 @@ class HomeAssistantWebSocketClient:
1110
1110
  await asyncio.wait_for(
1111
1111
  asyncio.shield(task), timeout=CLEANUP_TIMEOUT_SECONDS
1112
1112
  )
1113
- except (Exception, TimeoutError) as e:
1113
+ except (Exception, TimeoutError) as e: # noqa: BLE001
1114
1114
  logger.debug("%s: cleanup did not finish cleanly: %s", what, e)
1115
1115
  except asyncio.CancelledError:
1116
1116
  logger.debug("%s: cleanup cancelled before it finished", what)
@@ -1433,7 +1433,7 @@ class HomeAssistantWebSocketClient:
1433
1433
  try:
1434
1434
  response = await self.send_command("ping")
1435
1435
  return response.get("type") == "pong"
1436
- except Exception:
1436
+ except Exception: # noqa: BLE001
1437
1437
  return False
1438
1438
 
1439
1439
  @property
@@ -1549,7 +1549,7 @@ class WebSocketManager:
1549
1549
  return verify_ssl
1550
1550
  try:
1551
1551
  return bool(get_global_settings().verify_ssl)
1552
- except Exception as e:
1552
+ except Exception as e: # noqa: BLE001
1553
1553
  # Mirror HomeAssistantWebSocketClient.__init__: a bad env var
1554
1554
  # elsewhere should not crash pooling or silently flip TLS off.
1555
1555
  logger.warning(
@@ -58,7 +58,7 @@ class WebSocketListenerService:
58
58
  logger.info("WebSocket listener service started successfully")
59
59
  return True
60
60
 
61
- except Exception as e:
61
+ except Exception as e: # noqa: BLE001
62
62
  logger.error(f"Failed to start WebSocket listener service: {e}")
63
63
  await self.stop()
64
64
  return False
@@ -188,7 +188,7 @@ class WebSocketListenerService:
188
188
  "state_changed", self._handle_state_change
189
189
  )
190
190
  logger.info("WebSocket reconnected successfully")
191
- except Exception as e:
191
+ except Exception as e: # noqa: BLE001
192
192
  logger.error(f"WebSocket reconnection failed: {e}")
193
193
 
194
194
  # Wait before next health check
@@ -196,7 +196,7 @@ class WebSocketListenerService:
196
196
 
197
197
  except asyncio.CancelledError:
198
198
  break
199
- except Exception as e:
199
+ except Exception as e: # noqa: BLE001
200
200
  logger.error(f"Connection monitor error: {e}")
201
201
  await asyncio.sleep(30)
202
202
 
@@ -210,7 +210,7 @@ class WebSocketListenerService:
210
210
 
211
211
  except asyncio.CancelledError:
212
212
  break
213
- except Exception as e:
213
+ except Exception as e: # noqa: BLE001
214
214
  logger.error(f"Cleanup task error: {e}")
215
215
  await asyncio.sleep(300)
216
216
 
@@ -241,7 +241,7 @@ async def get_listener_service() -> WebSocketListenerService:
241
241
  if _listener_service is not None:
242
242
  try:
243
243
  await _listener_service.stop()
244
- except Exception as e:
244
+ except Exception as e: # noqa: BLE001
245
245
  logger.debug(f"Error stopping previous listener service: {e}")
246
246
 
247
247
  _listener_service = WebSocketListenerService()
@@ -23,7 +23,7 @@ def dashboard_image_content(
23
23
  image = Image(
24
24
  data=capture.data, format=capture.image_format
25
25
  ).to_image_content(mime_type=capture.mime_type)
26
- except Exception as exc:
26
+ except Exception as exc: # noqa: BLE001
27
27
  raise_tool_error(
28
28
  create_error_response(
29
29
  ErrorCode.IMAGE_SERIALIZATION_FAILED,
@@ -275,7 +275,7 @@ async def fetch_dashboard_render_config(client: Any, url_path: str) -> dict[str,
275
275
  response = await client.send_websocket_message(request)
276
276
  except ToolError:
277
277
  raise
278
- except Exception as exc:
278
+ except Exception as exc: # noqa: BLE001
279
279
  raise_tool_error(
280
280
  create_error_response(
281
281
  ErrorCode.CONNECTION_FAILED,
@@ -83,7 +83,7 @@ def _read_only_mode() -> bool:
83
83
  from ..read_only import is_read_only
84
84
 
85
85
  return is_read_only()
86
- except Exception: # pragma: no cover - settings must never break a read
86
+ except Exception: # noqa: BLE001 # pragma: no cover - settings must never break a read
87
87
  return False
88
88
 
89
89
 
@@ -319,7 +319,7 @@ class ThemeGuard:
319
319
  await asyncio.wait_for(
320
320
  asyncio.shield(close), timeout=CLOSE_TIMEOUT_SECONDS
321
321
  )
322
- except (Exception, TimeoutError) as close_error:
322
+ except (Exception, TimeoutError) as close_error: # noqa: BLE001
323
323
  logger.debug(
324
324
  "Ignoring error while closing the theme-guard session: %s",
325
325
  close_error,
@@ -354,7 +354,7 @@ class ThemeGuard:
354
354
  try:
355
355
  self._snapshot = await self._read_theme()
356
356
  self._snapshot_taken = True
357
- except Exception as exc:
357
+ except Exception as exc: # noqa: BLE001
358
358
  logger.warning(
359
359
  "Could not read the screenshot engine user's saved theme "
360
360
  "before rendering: %s",
@@ -381,7 +381,7 @@ class ThemeGuard:
381
381
  # it land before reading (see RESTORE_SETTLE_SECONDS).
382
382
  await asyncio.sleep(RESTORE_SETTLE_SECONDS)
383
383
  current = await self._read_theme()
384
- except Exception as exc:
384
+ except Exception as exc: # noqa: BLE001
385
385
  logger.warning(
386
386
  "Could not re-read the screenshot engine user's saved theme "
387
387
  "after rendering: %s",
@@ -151,7 +151,7 @@ async def _refresh_installed_candidates() -> dict[str, Any] | None:
151
151
  attempted += 1
152
152
  try:
153
153
  await send_hacs_repository_refresh(ws_client, str(repo["id"]))
154
- except Exception as err:
154
+ except Exception as err: # noqa: BLE001
155
155
  # Both entries read installed only when someone downloaded the
156
156
  # mirror without removing the legacy record — HACS guards against
157
157
  # adding the same repository twice but not against two
@@ -1928,7 +1928,7 @@ class HomeAssistantSmartMCPServer:
1928
1928
  )
1929
1929
  else:
1930
1930
  logger.warning(f"⚠️ Failed to connect to Home Assistant: {error}")
1931
- except Exception as e:
1931
+ except Exception as e: # noqa: BLE001
1932
1932
  logger.error(f"❌ Error testing connection: {e}")
1933
1933
 
1934
1934
  # Log successful server initialization
@@ -102,7 +102,7 @@ async def _get_fs_custom_paths(
102
102
  )
103
103
  try:
104
104
  result = await _fs_custom_paths_call(server, "get_allowed_paths", {})
105
- except Exception as exc:
105
+ except Exception as exc: # noqa: BLE001
106
106
  logger.warning("fs-custom-paths GET could not reach ha_mcp_tools: %s", exc)
107
107
  return _unavailable(
108
108
  _component_error_reason(exc)
@@ -175,7 +175,7 @@ async def _save_fs_custom_paths(
175
175
  result = await _fs_custom_paths_call(
176
176
  server, "set_allowed_paths", {"paths": paths}
177
177
  )
178
- except Exception as exc:
178
+ except Exception as exc: # noqa: BLE001
179
179
  logger.warning("fs-custom-paths POST could not reach ha_mcp_tools: %s", exc)
180
180
  return JSONResponse(
181
181
  create_error_response(
@@ -168,7 +168,7 @@ async def _restart_embedded(server: HomeAssistantSmartMCPServer) -> JSONResponse
168
168
 
169
169
  try:
170
170
  found = await find_server_config_entry(server.client)
171
- except Exception as exc:
171
+ except Exception as exc: # noqa: BLE001
172
172
  # A discovery FAILURE is not "entry not found" — masking a
173
173
  # WS/connection hiccup as not-found steers users toward
174
174
  # reinstalling a running component. Also: the restart JS
@@ -362,7 +362,7 @@ async def _settings_info(
362
362
  # Executor: get_version reads package metadata from disk, and the
363
363
  # restart cycle polls this endpoint.
364
364
  version = await asyncio.to_thread(get_version)
365
- except Exception: # pragma: no cover — defensive only
365
+ except Exception: # pragma: no cover — defensive only # noqa: BLE001
366
366
  logger.warning("get_version() raised; omitting version from info")
367
367
  version = None
368
368
  # ``deployment_mode`` reuses the bug-report detector so the UI and
@@ -281,7 +281,7 @@ async def _live_addon_options(
281
281
  options, err = await _supervisor_fetch_current_options(
282
282
  server.settings.verify_ssl
283
283
  )
284
- except Exception as exc: # pragma: no cover - defensive belt-and-braces
284
+ except Exception as exc: # noqa: BLE001 # pragma: no cover - defensive belt-and-braces
285
285
  logger.debug("Live add-on options fetch raised %s — using boot-env values", exc)
286
286
  return {}
287
287
  if err is not None:
@@ -53,7 +53,7 @@ def _test_server_import(errors: list[str]) -> type | None:
53
53
 
54
54
  print(" ✓ Server module imported successfully")
55
55
  return HomeAssistantSmartMCPServer
56
- except Exception as e:
56
+ except Exception as e: # noqa: BLE001
57
57
  errors.append(f"Failed to import server module: {e}")
58
58
  print(f" ✗ Server module import - FAILED: {e}")
59
59
  return None
@@ -66,7 +66,7 @@ def _test_server_instantiation(errors: list[str], server_cls: type) -> Any | Non
66
66
  mcp = server.mcp
67
67
  print(f" ✓ Server created: {mcp.name}")
68
68
  return mcp
69
- except Exception as e:
69
+ except Exception as e: # noqa: BLE001
70
70
  errors.append(f"Failed to create server: {e}")
71
71
  print(f" ✗ Server instantiation - FAILED: {e}")
72
72
  return None
@@ -86,7 +86,7 @@ def _test_tool_discovery(errors: list[str], mcp: Any) -> int:
86
86
  tool_names = [t.name for t in tools[:5]]
87
87
  print(f" ✓ Sample tools: {', '.join(tool_names)}...")
88
88
  return tool_count
89
- except Exception as e:
89
+ except Exception as e: # noqa: BLE001
90
90
  errors.append(f"Failed to discover tools: {e}")
91
91
  print(f" ✗ Tool discovery - FAILED: {e}")
92
92
  return 0
@@ -283,7 +283,7 @@ async def _backup_prep_via_component(
283
283
  else:
284
284
  logger.warning("%s failed; fell back to legacy: %r", WS_BACKUP_PREP, exc)
285
285
  return None
286
- except Exception as exc:
286
+ except Exception as exc: # noqa: BLE001
287
287
  # HomeAssistantConnectionError: a pooled-WS drop or a failed
288
288
  # (re)connect. The legacy probes
289
289
  # ride a dedicated already-connected socket, so fall back rather than fail
@@ -787,7 +787,7 @@ async def create_backup(
787
787
 
788
788
  except ToolError:
789
789
  raise
790
- except Exception as e:
790
+ except Exception as e: # noqa: BLE001
791
791
  logger.error(f"Error creating backup: {e}")
792
792
  exception_to_structured_error(
793
793
  e,
@@ -1162,7 +1162,7 @@ async def restore_backup(
1162
1162
 
1163
1163
  except ToolError:
1164
1164
  raise
1165
- except Exception as e:
1165
+ except Exception as e: # noqa: BLE001
1166
1166
  logger.error(f"Error restoring backup: {e}")
1167
1167
  exception_to_structured_error(
1168
1168
  e,
@@ -1271,7 +1271,7 @@ async def list_backups(client: HomeAssistantClient, limit: int = 200) -> dict[st
1271
1271
 
1272
1272
  except ToolError:
1273
1273
  raise
1274
- except Exception as e:
1274
+ except Exception as e: # noqa: BLE001
1275
1275
  logger.error(f"Error listing backups: {e}")
1276
1276
  exception_to_structured_error(
1277
1277
  e,
@@ -1396,7 +1396,7 @@ async def delete_backup(
1396
1396
 
1397
1397
  except ToolError:
1398
1398
  raise
1399
- except Exception as e:
1399
+ except Exception as e: # noqa: BLE001
1400
1400
  logger.error(f"Error deleting backup: {e}")
1401
1401
  exception_to_structured_error(
1402
1402
  e,
@@ -2016,7 +2016,7 @@ async def _edits_diff(
2016
2016
  )
2017
2017
  except ToolError:
2018
2018
  raise
2019
- except Exception as err:
2019
+ except Exception as err: # noqa: BLE001
2020
2020
  # Fetching the live config for diff goes through the
2021
2021
  # same domain handler ``restore`` uses, so the same
2022
2022
  # HA-side failure modes (4xx/5xx, WS errors, schema
@@ -2139,7 +2139,7 @@ async def _edits_restore(
2139
2139
  )
2140
2140
  except ToolError:
2141
2141
  raise
2142
- except Exception as err:
2142
+ except Exception as err: # noqa: BLE001
2143
2143
  # ``handler.restore`` is domain-specific and can surface
2144
2144
  # HA-side rejections (schema-validation failures, 4xx/5xx
2145
2145
  # responses, WS command errors). Without this catch those
@@ -218,7 +218,7 @@ async def _via_component(client: Any, domain: str, path: str) -> _ComponentBody:
218
218
  "ha_mcp_tools/blueprint_get failed; served metadata-only: %r", exc
219
219
  )
220
220
  return _NO_COMPONENT_BODY
221
- except Exception as exc:
221
+ except Exception as exc: # noqa: BLE001
222
222
  # HomeAssistantConnectionError / plain establish Exception → metadata-only
223
223
  # (no full-body legacy fetch exists; the base metadata is already served).
224
224
  logger.warning(
@@ -252,7 +252,7 @@ async def _via_tools_entry(client: Any, domain: str, path: str) -> str | None:
252
252
 
253
253
  try:
254
254
  content = await _fetch_file(client, f"blueprints/{domain}/{path}")
255
- except Exception as exc:
255
+ except Exception as exc: # noqa: BLE001
256
256
  logger.debug(
257
257
  "File & YAML Tools read of blueprint %r unavailable (%r)", path, exc
258
258
  )
@@ -294,7 +294,7 @@ async def _via_source_url(
294
294
  imported = await client.send_websocket_message(
295
295
  {"type": "blueprint/import", "url": source_url}
296
296
  )
297
- except Exception as exc:
297
+ except Exception as exc: # noqa: BLE001
298
298
  logger.debug(
299
299
  "Re-fetch of blueprint %r from %s failed: %r",
300
300
  path,
@@ -83,7 +83,7 @@ async def _config_entry_rows(client: Any, **query: Any) -> list[dict[str, Any]]
83
83
  else:
84
84
  logger.warning("%s failed: %r", WS_CONFIG_ENTRIES, exc)
85
85
  return None
86
- except Exception as exc:
86
+ except Exception as exc: # noqa: BLE001
87
87
  logger.warning("%s connection error: %r", WS_CONFIG_ENTRIES, exc)
88
88
  return None
89
89
  result = raw.get("result") if isinstance(raw, dict) else None
@@ -175,7 +175,7 @@ async def fetch_config_entry_unique_id(client: Any, entry_id: str) -> EntryUniqu
175
175
  "%s failed; unique_id unavailable: %r", WS_CONFIG_ENTRIES, exc
176
176
  )
177
177
  return UNKNOWN_UNIQUE_ID
178
- except Exception as exc:
178
+ except Exception as exc: # noqa: BLE001
179
179
  logger.warning(
180
180
  "%s connection error; unique_id unavailable: %r", WS_CONFIG_ENTRIES, exc
181
181
  )
@@ -119,7 +119,7 @@ async def fetch_entity_lookup_via_component(
119
119
  else:
120
120
  logger.warning("%s failed; fell back to legacy: %r", WS_ENTITY_LOOKUP, exc)
121
121
  return None
122
- except Exception as exc:
122
+ except Exception as exc: # noqa: BLE001
123
123
  # HomeAssistantConnectionError: a pooled-WS drop or a failed
124
124
  # (re)connect.
125
125
  # The resolvers' legacy paths do NOT die identically (see module docstring),
@@ -183,7 +183,7 @@ async def fetch_reference_data_via_component(
183
183
  else:
184
184
  logger.warning("%s failed; fell back to legacy: %r", WS_REFERENCE_DATA, exc)
185
185
  return None
186
- except Exception as exc:
186
+ except Exception as exc: # noqa: BLE001
187
187
  # Legacy is REST (get_services/get_states), NOT the pooled WS, so a
188
188
  # pooled-WS drop or a failed (re)connect must route to the REST fetch
189
189
  # rather than escape into the validator's swallow-all guard (which would
@@ -159,7 +159,7 @@ async def edit_dashboard_via_component(
159
159
  kwargs["patch"] = patch
160
160
  try:
161
161
  raw = await ws.send_command(WS_DASHBOARD_EDIT, **kwargs)
162
- except (asyncio.CancelledError, Exception) as exc:
162
+ except (asyncio.CancelledError, Exception) as exc: # noqa: BLE001
163
163
  # Pre-dispatch cancellation still propagates; after dispatch it cannot
164
164
  # establish whether Core saved unless an explicit rejection says so.
165
165
  _handle_command_failure(exc, client, url_path, action)
@@ -110,7 +110,7 @@ async def fetch_device_via_component(
110
110
  else:
111
111
  logger.warning("%s failed; fell back to legacy: %r", WS_DEVICE_GET, exc)
112
112
  return None
113
- except Exception as exc:
113
+ except Exception as exc: # noqa: BLE001
114
114
  # HomeAssistantConnectionError: a pooled-WS drop or a failed
115
115
  # (re)connect. The legacy paths ride the send_websocket_message bridge /
116
116
  # a dedicated capture socket, so fall back to legacy; if the transport
@@ -192,7 +192,7 @@ async def fetch_device_list_via_component(client: Any) -> dict[str, Any] | None:
192
192
  else:
193
193
  logger.warning("%s failed; fell back to legacy: %r", WS_DEVICE_LIST, exc)
194
194
  return None
195
- except Exception as exc:
195
+ except Exception as exc: # noqa: BLE001
196
196
  # HomeAssistantConnectionError / plain establish Exception → legacy (the
197
197
  # legacy device list rides the send_websocket_message bridge).
198
198
  logger.warning(
@@ -132,7 +132,7 @@ async def fetch_registries_via_component(
132
132
  else:
133
133
  logger.warning("%s failed; fell back to legacy: %r", WS_REGISTRIES, exc)
134
134
  return None
135
- except Exception as exc:
135
+ except Exception as exc: # noqa: BLE001
136
136
  # HomeAssistantConnectionError: a pooled-WS drop or a failed
137
137
  # (re)connect. The capture
138
138
  # fetchers use a dedicated one-shot socket and forbid a blocked write, so
@@ -102,7 +102,7 @@ async def fetch_entities_for_config_entry_via_component(
102
102
  "%s failed; fell back to legacy: %r", WS_REGISTRY_LOOKUP, exc
103
103
  )
104
104
  return None
105
- except Exception as exc:
105
+ except Exception as exc: # noqa: BLE001
106
106
  # HomeAssistantConnectionError / plain establish Exception → legacy (the
107
107
  # legacy entity_registry/list dump rides the bridge; see module
108
108
  # docstring). Never propagate a transport failure out of the read.
@@ -157,7 +157,7 @@ async def resolve_entities_via_component(
157
157
  "%s failed; fell back to legacy: %r", WS_REGISTRY_LOOKUP, exc
158
158
  )
159
159
  return None
160
- except Exception as exc:
160
+ except Exception as exc: # noqa: BLE001
161
161
  # HomeAssistantConnectionError / plain establish Exception → legacy. The
162
162
  # simple-delete consumer's legacy per-id retry loop only runs when this
163
163
  # returns None, so an escaping transport failure would skip it entirely.