ha-mcp-dev 9.1.0.dev3271__tar.gz → 9.1.0.dev3275__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.
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/PKG-INFO +1 -1
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/pyproject.toml +1 -1
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/pyproject.toml.orig +1 -1
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/rest_client.py +6 -6
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/blueprint_sources.py +1 -1
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_config_reads.py +7 -7
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_devices.py +1 -1
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_registry_lookup.py +2 -2
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/log_sources_logbook.py +2 -5
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/response_helpers.py +17 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/component.py +3 -1
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/legacy.py +10 -10
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/modes.py +1 -2
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/overview.py +8 -7
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/response.py +13 -13
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/state.py +15 -15
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_config_helpers.py +25 -22
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_dev.py +1 -1
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_entities.py +1 -1
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_history.py +3 -3
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_integrations.py +3 -3
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_search.py +6 -6
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_voice_assistant.py +1 -1
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_zones.py +7 -6
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/LICENSE +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev_security.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/mixins/skills.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/mixins/extensions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/_constants.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/_resources.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/_snapshot.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/_source.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/extension.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/skills/models.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/_request_clock.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/app_discovery.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/auth/iss_stamp.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_dashboards.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_diff.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_entities.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_entity_ids.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_helper_target.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_integrations.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_tags.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_todo.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/backup_zones.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/admin_routes.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/error_log_journald.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/models.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/config_backup.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/config_meta.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/config_overrides.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/config_registry.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/config_settings.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/dashboard_screenshot/engine_compat.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/http_transport.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/image_info.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/ipv6_lan_guard.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/listen_sockets.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/mcp_client_context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/decision_pin.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/decisions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/events.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/mrtr.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/server_channels.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/server_instructions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/server_lifespan.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/server_tool_text.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_handlers_oauth_callbacks.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/az.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/settings_ui/settings_js/10_oauth_callbacks.js +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/storage_helper_types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/addon_connection_hints.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/area_messages.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/backup_access.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/backup_on_demand.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/backup_snapshot.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/backup_snapshot_restore.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/bug_report_config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/bug_report_redaction.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/bug_report_sources.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/bug_report_templates.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/coercion.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_helper_collections.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_todo.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_backup.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_file_visibility.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/create.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/icon_route.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/update.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_write_errors.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/config_write_helpers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/core_contract.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/dashboard_card_describe.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/dashboard_read_errors.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/dev_backup.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/device_enrichment.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/energy_preferences.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/entity_expose_batch.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/entity_registration.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/entity_removal.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/entity_update_fields.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/flow_helper_lookup.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/hacs_backend.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/helper_flows.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/history_response.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/integration_entry_state.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/recorder_errors.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/scene_discovery.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/search/entities.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/server_version.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/statistics_calendar.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/statistics_helpers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/statistics_resets.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/system_restart.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tool_hints.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/update_categories.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/ws_waiters.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transforms/compact_params.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transforms/component_helpers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transforms/component_search.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transforms/write_tool_note.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/dashboard_patch.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/mcp_client_host.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/registry_update_lock.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/visibility/config_files.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/visibility/identifier_aliases.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/visibility/resolver.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "9.1.0.
|
|
7
|
+
version = "9.1.0.dev3275"
|
|
8
8
|
description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13,<3.15"
|
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "9.1.0.
|
|
7
|
+
version = "9.1.0.dev3275"
|
|
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
|
|
@@ -1959,8 +1959,8 @@ class HomeAssistantClient:
|
|
|
1959
1959
|
for attempt in range(max_retries):
|
|
1960
1960
|
# Whether the failure happened before a usable connection existed.
|
|
1961
1961
|
# Failing to obtain one is transport death whatever class the
|
|
1962
|
-
# manager raises
|
|
1963
|
-
# ``
|
|
1962
|
+
# manager raises; an auth failure or the pool-lock guard's bare
|
|
1963
|
+
# ``Exception`` is not a connection error; type cannot decide this.
|
|
1964
1964
|
acquiring = True
|
|
1965
1965
|
try:
|
|
1966
1966
|
# Use per-client WebSocket keyed to this client's credentials
|
|
@@ -1999,10 +1999,10 @@ class HomeAssistantClient:
|
|
|
1999
1999
|
continue
|
|
2000
2000
|
|
|
2001
2001
|
# Phase first, type second. Failing before a client exists is
|
|
2002
|
-
# evidence about the transport whatever class was raised
|
|
2003
|
-
#
|
|
2004
|
-
#
|
|
2005
|
-
#
|
|
2002
|
+
# evidence about the transport whatever class was raised; an
|
|
2003
|
+
# auth failure or the pool-lock guard's bare ``Exception`` is not
|
|
2004
|
+
# a no-answer class, so that case cannot be decided by type.
|
|
2005
|
+
# Past acquisition only the no-answer classes count:
|
|
2006
2006
|
# ``send_command`` deliberately re-raises the original
|
|
2007
2007
|
# ``ConnectionClosed`` / ``ConnectionResetError`` from the send
|
|
2008
2008
|
# rather than wrapping it, to keep at-most-once semantics for
|
|
@@ -219,7 +219,7 @@ async def _via_component(client: Any, domain: str, path: str) -> _ComponentBody:
|
|
|
219
219
|
)
|
|
220
220
|
return _NO_COMPONENT_BODY
|
|
221
221
|
except Exception as exc: # noqa: BLE001
|
|
222
|
-
# HomeAssistantConnectionError
|
|
222
|
+
# HomeAssistantConnectionError or any other error → metadata-only
|
|
223
223
|
# (no full-body legacy fetch exists; the base metadata is already served).
|
|
224
224
|
logger.warning(
|
|
225
225
|
"ha_mcp_tools/blueprint_get connection error; served metadata-only: %r",
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_config_reads.py
RENAMED
|
@@ -27,11 +27,11 @@ returns its payload (an entity_lookup with an EMPTY ``matches`` list is
|
|
|
27
27
|
authoritative — "no registry entry with that unique_id" — kept distinct from the
|
|
28
28
|
``None`` miss).
|
|
29
29
|
|
|
30
|
-
Both helpers apply the uniform transport-fallback taxonomy: a
|
|
31
|
-
``HomeAssistantConnectionError`` off ``send_command``
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
Both helpers apply the uniform transport-fallback taxonomy: a transport failure
|
|
31
|
+
— ``HomeAssistantConnectionError`` off ``send_command`` or from a failed (re)build
|
|
32
|
+
of the pooled socket in ``get_websocket_client()``, or ``HomeAssistantAuthError``
|
|
33
|
+
when HA rejects the token — is caught and mapped to ``None`` so the legacy path
|
|
34
|
+
runs, NEVER propagated out of the read. Neither consumer's legacy path dies
|
|
35
35
|
identically on a pooled-WS drop, so propagating would abort work the legacy path
|
|
36
36
|
still completes:
|
|
37
37
|
|
|
@@ -120,8 +120,8 @@ async def fetch_entity_lookup_via_component(
|
|
|
120
120
|
logger.warning("%s failed; fell back to legacy: %r", WS_ENTITY_LOOKUP, exc)
|
|
121
121
|
return None
|
|
122
122
|
except Exception as exc: # noqa: BLE001
|
|
123
|
-
# HomeAssistantConnectionError
|
|
124
|
-
# (re)connect.
|
|
123
|
+
# HomeAssistantConnectionError (a pooled-WS drop or a failed
|
|
124
|
+
# (re)connect) or any other error.
|
|
125
125
|
# The resolvers' legacy paths do NOT die identically (see module docstring),
|
|
126
126
|
# so route to legacy rather than escape.
|
|
127
127
|
logger.warning(
|
|
@@ -193,7 +193,7 @@ async def fetch_device_list_via_component(client: Any) -> dict[str, Any] | None:
|
|
|
193
193
|
logger.warning("%s failed; fell back to legacy: %r", WS_DEVICE_LIST, exc)
|
|
194
194
|
return None
|
|
195
195
|
except Exception as exc: # noqa: BLE001
|
|
196
|
-
# HomeAssistantConnectionError
|
|
196
|
+
# HomeAssistantConnectionError or any other error → legacy (the
|
|
197
197
|
# legacy device list rides the send_websocket_message bridge).
|
|
198
198
|
logger.warning(
|
|
199
199
|
"%s connection error; falling back to legacy: %r", WS_DEVICE_LIST, exc
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/component_registry_lookup.py
RENAMED
|
@@ -104,7 +104,7 @@ async def fetch_entities_for_config_entry_via_component(
|
|
|
104
104
|
)
|
|
105
105
|
return None
|
|
106
106
|
except Exception as exc: # noqa: BLE001
|
|
107
|
-
# HomeAssistantConnectionError
|
|
107
|
+
# HomeAssistantConnectionError or any other error → legacy (the
|
|
108
108
|
# legacy entity_registry/list dump rides the bridge; see module
|
|
109
109
|
# docstring). Never propagate a transport failure out of the read.
|
|
110
110
|
logger.warning(
|
|
@@ -159,7 +159,7 @@ async def resolve_entities_via_component(
|
|
|
159
159
|
)
|
|
160
160
|
return None
|
|
161
161
|
except Exception as exc: # noqa: BLE001
|
|
162
|
-
# HomeAssistantConnectionError
|
|
162
|
+
# HomeAssistantConnectionError or any other error → legacy. The
|
|
163
163
|
# simple-delete consumer's legacy per-id retry loop only runs when this
|
|
164
164
|
# returns None, so an escaping transport failure would skip it entirely.
|
|
165
165
|
logger.warning(
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/log_sources_logbook.py
RENAMED
|
@@ -602,12 +602,9 @@ class LogbookLogSourceMixin:
|
|
|
602
602
|
order,
|
|
603
603
|
)
|
|
604
604
|
|
|
605
|
-
wrapped = await add_timezone_metadata(self._client, logbook_data)
|
|
606
605
|
if transport_warnings:
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
wrapped["warnings"] = transport_warnings + wrapped.get("warnings", [])
|
|
610
|
-
return wrapped
|
|
606
|
+
logbook_data["warnings"] = transport_warnings
|
|
607
|
+
return await add_timezone_metadata(self._client, logbook_data)
|
|
611
608
|
|
|
612
609
|
except ToolError:
|
|
613
610
|
raise
|
|
@@ -416,10 +416,27 @@ async def add_timezone_metadata(
|
|
|
416
416
|
- Naive strings (no offset) are assumed to be UTC before conversion.
|
|
417
417
|
- ``ZoneInfoNotFoundError`` (tzdata not installed) falls back to UTC.
|
|
418
418
|
- Any config-fetch failure also falls back to UTC without conversion.
|
|
419
|
+
|
|
420
|
+
A top-level ``warnings`` list in *data* is returned beside ``data`` instead
|
|
421
|
+
of inside it, ahead of any timezone warning the wrapper adds, and omitted
|
|
422
|
+
when empty; *data* itself is left unchanged.
|
|
419
423
|
"""
|
|
420
424
|
if not include_metadata:
|
|
421
425
|
return data
|
|
422
426
|
|
|
427
|
+
result = await _wrap_with_timezone(client, data, convert_timestamps)
|
|
428
|
+
inner = result["data"]
|
|
429
|
+
if isinstance(inner, dict) and isinstance(inner.get("warnings"), list):
|
|
430
|
+
result["data"] = {k: v for k, v in inner.items() if k != "warnings"}
|
|
431
|
+
if warnings := inner["warnings"] + result.get("warnings", []):
|
|
432
|
+
result["warnings"] = warnings
|
|
433
|
+
return result
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
async def _wrap_with_timezone(
|
|
437
|
+
client: Any, data: dict[str, Any], convert_timestamps: bool
|
|
438
|
+
) -> dict[str, Any]:
|
|
439
|
+
"""Fetch the timezone, convert *data* and wrap it; may add top-level ``warnings``."""
|
|
423
440
|
ha_timezone, fetch_failed = await fetch_ha_timezone(client)
|
|
424
441
|
|
|
425
442
|
if not convert_timestamps:
|
|
@@ -767,7 +767,9 @@ class ComponentSearchMixin(LegacySearchMixin):
|
|
|
767
767
|
``send_websocket_message`` bridge, so a component-side fault degrades
|
|
768
768
|
to partial results rather than escaping. The bridge shares this
|
|
769
769
|
pooled connection, so a dead transport raises there too (#1947) and
|
|
770
|
-
the registry-unavailable warning names what was skipped.
|
|
770
|
+
the registry-unavailable warning names what was skipped. When no
|
|
771
|
+
legacy surface answers either, the legacy search raises its
|
|
772
|
+
structured error instead.
|
|
771
773
|
"""
|
|
772
774
|
if isinstance(exc, (HomeAssistantCommandError, HomeAssistantCommandTimeout)):
|
|
773
775
|
if is_unknown_command(exc):
|
|
@@ -135,6 +135,14 @@ class LegacySearchMixin(EntityModesMixin):
|
|
|
135
135
|
continue
|
|
136
136
|
_apply_search_outcome(response, label, outcome)
|
|
137
137
|
|
|
138
|
+
if outcomes and len(errors) == len(outcomes):
|
|
139
|
+
# No surface answered, so empty buckets would read as "nothing
|
|
140
|
+
# matched": report the first surface's error instead.
|
|
141
|
+
first = cast(Exception, outcomes[0])
|
|
142
|
+
if isinstance(first, ToolError):
|
|
143
|
+
raise first
|
|
144
|
+
exception_to_structured_error(first)
|
|
145
|
+
|
|
138
146
|
# ``count`` mirrors the previous ha_search_entities semantics: items
|
|
139
147
|
# returned in this response (post-pagination), not total matches across
|
|
140
148
|
# the corpus. Total matches live in entity_total_matches +
|
|
@@ -347,17 +355,9 @@ class LegacySearchMixin(EntityModesMixin):
|
|
|
347
355
|
# carry area_result's warnings; forward them here in one place so a
|
|
348
356
|
# visibility/registry degradation on the area path is not silently
|
|
349
357
|
# dropped (mirrors the non-area path's merge_visibility_warnings).
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
# the ``["data"]`` unwrap is a defensive holdover for a hypothetical
|
|
353
|
-
# future wrapped payload.
|
|
354
|
-
warn_target = (
|
|
355
|
-
area_search["data"]
|
|
356
|
-
if isinstance(area_search, dict) and "data" in area_search
|
|
357
|
-
else area_search
|
|
358
|
+
return merge_visibility_warnings(
|
|
359
|
+
area_search, area_result.get("warnings", [])
|
|
358
360
|
)
|
|
359
|
-
merge_visibility_warnings(warn_target, area_result.get("warnings", []))
|
|
360
|
-
return area_search
|
|
361
361
|
|
|
362
362
|
if domain_filter and (not query or not query.strip()):
|
|
363
363
|
return await self._search_domain_only(
|
|
@@ -167,8 +167,7 @@ class EntityModesMixin(EntityEnrichmentMixin):
|
|
|
167
167
|
merge_visibility_warnings(search_data, enrich_warnings)
|
|
168
168
|
|
|
169
169
|
# No add_timezone_metadata: entity records carry no timestamp fields, so
|
|
170
|
-
# the enrichment converted nothing and its /api/config fetch was pure
|
|
171
|
-
# waste (the orchestrator discards its metadata wrapper anyway).
|
|
170
|
+
# the enrichment converted nothing and its /api/config fetch was pure waste.
|
|
172
171
|
return search_data
|
|
173
172
|
|
|
174
173
|
async def _search_area_only_populated(
|
|
@@ -468,13 +468,14 @@ class OverviewMixin(SearchToolsBase):
|
|
|
468
468
|
non-empty ``slice_errors`` — ``_build_overview_slices`` returns
|
|
469
469
|
``None``): treated like the command-error branch (legacy + warning +
|
|
470
470
|
log), so a partial snapshot never serves a silently-degraded overview.
|
|
471
|
-
- ``HomeAssistantConnectionError`` (pooled-WS drop
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
471
|
+
- ``HomeAssistantConnectionError`` (pooled-WS drop or a failed (re)connect
|
|
472
|
+
in ``get_websocket_client()``): served the same way — the legacy
|
|
473
|
+
overview reads ``/api/states`` + ``/api/services`` over REST and the
|
|
474
|
+
registries through the ``send_websocket_message`` bridge, so it
|
|
475
|
+
degrades to a partial overview rather than dying identically on a
|
|
476
|
+
pooled-WS drop; a transport failure must not escape. A token HA
|
|
477
|
+
rejects (``HomeAssistantAuthError``) takes this branch too, but the
|
|
478
|
+
legacy reads use the same token and fail with it.
|
|
478
479
|
"""
|
|
479
480
|
try:
|
|
480
481
|
raw = await self._send_component_overview(inputs)
|
|
@@ -189,6 +189,17 @@ def _mirror_partial_to_warnings(response: dict[str, Any]) -> None:
|
|
|
189
189
|
warnings.append(warning_text)
|
|
190
190
|
|
|
191
191
|
|
|
192
|
+
def _omit_empty_warnings(response: dict[str, Any]) -> dict[str, Any]:
|
|
193
|
+
"""Drop an empty ``warnings`` list: the response contract omits it.
|
|
194
|
+
|
|
195
|
+
The builders seed ``warnings`` as ``[]`` so they can extend it; this runs
|
|
196
|
+
once on the finished response of every ``ha_search`` path.
|
|
197
|
+
"""
|
|
198
|
+
if response.get("warnings") == []:
|
|
199
|
+
del response["warnings"]
|
|
200
|
+
return response
|
|
201
|
+
|
|
202
|
+
|
|
192
203
|
def _project_response_fields(
|
|
193
204
|
response: dict[str, Any], parsed_fields: list[str] | None
|
|
194
205
|
) -> dict[str, Any]:
|
|
@@ -500,20 +511,9 @@ def _build_hidden_ids(registry_result: Any) -> set[str]:
|
|
|
500
511
|
def _apply_search_outcome(
|
|
501
512
|
response: dict[str, Any],
|
|
502
513
|
label: str,
|
|
503
|
-
|
|
514
|
+
payload: dict[str, Any],
|
|
504
515
|
) -> None:
|
|
505
|
-
"""Apply one gather outcome (entities or configs) to the response dict in-place.
|
|
506
|
-
|
|
507
|
-
Both ``_ha_search_entities`` and ``_ha_deep_search`` return their search dict
|
|
508
|
-
directly. The entity builders no longer wrap it via ``add_timezone_metadata``:
|
|
509
|
-
entity-search records carry none of the timestamp fields that enrichment
|
|
510
|
-
converts, so it was a discarded ``/api/config`` fetch. The ``{"data": ...}``
|
|
511
|
-
unwrap is kept as a defensive no-op so a future wrapped payload still reads
|
|
512
|
-
correctly.
|
|
513
|
-
"""
|
|
514
|
-
payload = (
|
|
515
|
-
outcome["data"] if isinstance(outcome, dict) and "data" in outcome else outcome
|
|
516
|
-
)
|
|
516
|
+
"""Apply one gather outcome (entities or configs) to the response dict in-place."""
|
|
517
517
|
if label == "entities":
|
|
518
518
|
response["entities"] = payload.get("results", [])
|
|
519
519
|
response["entity_total_matches"] = payload.get("total_matches", 0)
|
|
@@ -13,7 +13,6 @@ from ...client.rest_client import (
|
|
|
13
13
|
HomeAssistantAPIError,
|
|
14
14
|
HomeAssistantCommandError,
|
|
15
15
|
HomeAssistantCommandTimeout,
|
|
16
|
-
HomeAssistantConnectionError,
|
|
17
16
|
)
|
|
18
17
|
from ...client.websocket_client import get_websocket_client
|
|
19
18
|
from ...errors import create_validation_error
|
|
@@ -297,11 +296,11 @@ class StateMixin(SearchToolsBase):
|
|
|
297
296
|
Returns the component's ``{states, missing}`` payload (found ids mapped to
|
|
298
297
|
their ``State.as_dict()`` body) or ``None`` when the component lacks the
|
|
299
298
|
``states`` capability, was downgraded (``unknown_command`` → invalidate the
|
|
300
|
-
cached caps), or
|
|
301
|
-
``ha_search`` / ``ha_get_zone
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
299
|
+
cached caps), errored, or returned a malformed payload (both logged).
|
|
300
|
+
Falls back **silently** — unlike ``ha_search`` / ``ha_get_zone``, which
|
|
301
|
+
append a ``warnings[]`` entry — because the legacy REST path returns the
|
|
302
|
+
byte-identical correct data either way, so the caller has nothing to act
|
|
303
|
+
on; the ``log.warning`` preserves operator visibility.
|
|
305
304
|
``ha_get_state``'s legacy path is a REST ``get_entity_state`` read on a
|
|
306
305
|
SEPARATE transport, so a WS transport/connect failure
|
|
307
306
|
(``HomeAssistantConnectionError``, covering both a pooled-WS drop and a
|
|
@@ -316,11 +315,7 @@ class StateMixin(SearchToolsBase):
|
|
|
316
315
|
return None
|
|
317
316
|
try:
|
|
318
317
|
raw = await self._send_component_states(entity_ids)
|
|
319
|
-
except (
|
|
320
|
-
HomeAssistantCommandError,
|
|
321
|
-
HomeAssistantCommandTimeout,
|
|
322
|
-
HomeAssistantConnectionError,
|
|
323
|
-
) as exc:
|
|
318
|
+
except (HomeAssistantCommandError, HomeAssistantCommandTimeout) as exc:
|
|
324
319
|
if is_unknown_command(exc):
|
|
325
320
|
invalidate_caps(self._client)
|
|
326
321
|
else:
|
|
@@ -329,14 +324,19 @@ class StateMixin(SearchToolsBase):
|
|
|
329
324
|
)
|
|
330
325
|
return None
|
|
331
326
|
except Exception as exc: # noqa: BLE001
|
|
332
|
-
#
|
|
333
|
-
#
|
|
327
|
+
# Mostly HomeAssistantConnectionError (a pooled-WS drop or a failed
|
|
328
|
+
# (re)connect); a WS auth failure or a raw socket error lands here
|
|
329
|
+
# too. Legacy REST rides a separate transport, so an install whose
|
|
330
|
+
# REST API still works keeps answering.
|
|
334
331
|
logger.warning(
|
|
335
332
|
"ha_mcp_tools/states connection error; fell back to legacy: %r", exc
|
|
336
333
|
)
|
|
337
334
|
return None
|
|
338
|
-
result = raw.get("result")
|
|
339
|
-
if not isinstance(result.get("states"), dict):
|
|
335
|
+
result = raw.get("result")
|
|
336
|
+
if not isinstance(result, dict) or not isinstance(result.get("states"), dict):
|
|
337
|
+
logger.warning(
|
|
338
|
+
"ha_mcp_tools/states returned a malformed payload; fell back to legacy"
|
|
339
|
+
)
|
|
340
340
|
return None
|
|
341
341
|
return result
|
|
342
342
|
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
@@ -212,25 +212,27 @@ class HelperConfigTools:
|
|
|
212
212
|
# silent empty). Storage/collection types keep the legacy fallback.
|
|
213
213
|
is_flow = helper_type not in SIMPLE_HELPER_TYPES
|
|
214
214
|
|
|
215
|
-
# Prefer the custom component's in-process listing when it advertises
|
|
216
|
-
# the capability: one WS round-trip that joins the entity registry, so
|
|
217
|
-
# each record carries the current entity_id + display name (the #1794
|
|
218
|
-
# stale-id fix, shipped additively) instead of only the storage id.
|
|
219
|
-
# Fall back cleanly for storage types when the component is absent,
|
|
220
|
-
# downlevel, or errors — the taxonomy lives in
|
|
221
|
-
# ``_list_helpers_via_component``. The legacy body below is untouched.
|
|
222
|
-
caps = await get_component_caps(self._client)
|
|
223
|
-
if component_supports(caps, "helpers_list"):
|
|
224
|
-
component_response = await self._list_helpers_via_component(
|
|
225
|
-
helper_type, is_flow=is_flow
|
|
226
|
-
)
|
|
227
|
-
if component_response is not None:
|
|
228
|
-
return _paginate_helpers_response(component_response, offset, limit)
|
|
229
|
-
if is_flow:
|
|
230
|
-
# No usable component path and the legacy body cannot serve flow
|
|
231
|
-
# helpers: hard error rather than an empty or misleading list.
|
|
232
|
-
_raise_flow_requires_component(helper_type)
|
|
233
215
|
try:
|
|
216
|
+
# Prefer the custom component's in-process listing when it advertises
|
|
217
|
+
# the capability: one WS round-trip that joins the entity registry, so
|
|
218
|
+
# each record carries the current entity_id + display name (the #1794
|
|
219
|
+
# stale-id fix, shipped additively) instead of only the storage id.
|
|
220
|
+
# Fall back cleanly for storage types when the component is absent,
|
|
221
|
+
# downlevel, or errors — the taxonomy lives in
|
|
222
|
+
# ``_list_helpers_via_component``.
|
|
223
|
+
# Inside the ``try`` so an error the fallback re-raises reaches the
|
|
224
|
+
# structured-error handler below.
|
|
225
|
+
caps = await get_component_caps(self._client)
|
|
226
|
+
if component_supports(caps, "helpers_list"):
|
|
227
|
+
component_response = await self._list_helpers_via_component(
|
|
228
|
+
helper_type, is_flow=is_flow
|
|
229
|
+
)
|
|
230
|
+
if component_response is not None:
|
|
231
|
+
return _paginate_helpers_response(component_response, offset, limit)
|
|
232
|
+
if is_flow:
|
|
233
|
+
# No usable component path and the legacy body cannot serve flow
|
|
234
|
+
# helpers: hard error rather than an empty or misleading list.
|
|
235
|
+
_raise_flow_requires_component(helper_type)
|
|
234
236
|
result = await self._client.send_websocket_message(
|
|
235
237
|
{"type": f"{helper_type}/list"}
|
|
236
238
|
)
|
|
@@ -297,8 +299,8 @@ class HelperConfigTools:
|
|
|
297
299
|
for a storage type, serve the correct result from the legacy WS list,
|
|
298
300
|
append a ``warnings[]`` entry, and ``log.warning``. For a flow type,
|
|
299
301
|
raise the component-required error — no legacy fallback exists.
|
|
300
|
-
- ``HomeAssistantConnectionError`` (pooled-WS drop
|
|
301
|
-
|
|
302
|
+
- ``HomeAssistantConnectionError`` (pooled-WS drop or a failed (re)connect
|
|
303
|
+
in ``get_websocket_client()``) or ``HomeAssistantAuthError`` (token rejected):
|
|
302
304
|
for a storage type, the legacy ``{helper_type}/list`` body is attempted,
|
|
303
305
|
with a ``warnings[]`` entry + ``log.warning``. It rides the
|
|
304
306
|
``send_websocket_message`` bridge over the SAME pooled connection
|
|
@@ -339,8 +341,9 @@ class HelperConfigTools:
|
|
|
339
341
|
return legacy
|
|
340
342
|
except Exception as exc:
|
|
341
343
|
# Transport/establishment failure — a pooled-WS drop or a failed
|
|
342
|
-
# (re)connect
|
|
343
|
-
#
|
|
344
|
+
# (re)connect (HomeAssistantConnectionError), a rejected token
|
|
345
|
+
# (HomeAssistantAuthError) or any other error. A storage type still
|
|
346
|
+
# attempts the legacy
|
|
344
347
|
# `{helper_type}/list` body: it rides the same pooled connection, so it
|
|
345
348
|
# recovers a component-side fault but not a dead socket, where the
|
|
346
349
|
# bridge raises in turn (#1947). A flow type has NO legacy body, so its
|
|
@@ -318,7 +318,7 @@ async def _fetch_server_entry_via_component(client: Any) -> dict[str, Any] | Non
|
|
|
318
318
|
logger.warning("%s failed; fell back to legacy: %r", WS_SERVER_ENTRY, exc)
|
|
319
319
|
return None
|
|
320
320
|
except Exception as exc: # noqa: BLE001
|
|
321
|
-
# HomeAssistantConnectionError
|
|
321
|
+
# HomeAssistantConnectionError or any other error → legacy probe
|
|
322
322
|
# (which rides the send_websocket_message bridge).
|
|
323
323
|
logger.warning(
|
|
324
324
|
"%s connection error; falling back to legacy: %r", WS_SERVER_ENTRY, exc
|
|
@@ -174,7 +174,7 @@ async def fetch_entity_enrichment_via_component(
|
|
|
174
174
|
logger.warning("%s failed; skipped enrichment: %r", WS_ENTITY_ENRICH, exc)
|
|
175
175
|
return None
|
|
176
176
|
except Exception as exc: # noqa: BLE001
|
|
177
|
-
# HomeAssistantConnectionError
|
|
177
|
+
# HomeAssistantConnectionError or any other error → skip
|
|
178
178
|
# enrichment (strictly additive; no legacy fetch dies here).
|
|
179
179
|
logger.warning(
|
|
180
180
|
"%s connection error; skipped enrichment: %r", WS_ENTITY_ENRICH, exc
|
|
@@ -502,8 +502,8 @@ class HistoryTools:
|
|
|
502
502
|
message="recorder query complete",
|
|
503
503
|
)
|
|
504
504
|
# Wrap first so the outer {"data": ..., "metadata": ...} shape
|
|
505
|
-
# is always present; then project the inner data dict
|
|
506
|
-
#
|
|
505
|
+
# is always present; then project the inner data dict and lift
|
|
506
|
+
# the typo warning project_fields may add to it.
|
|
507
507
|
_r = await add_timezone_metadata(
|
|
508
508
|
self._client, inner, convert_timestamps=False
|
|
509
509
|
)
|
|
@@ -980,7 +980,7 @@ async def _fetch_history(
|
|
|
980
980
|
"summary": summary_until is not None,
|
|
981
981
|
},
|
|
982
982
|
}
|
|
983
|
-
if summary_until is not None: #
|
|
983
|
+
if summary_until is not None: # add_timezone_metadata drops an empty list
|
|
984
984
|
history_data["warnings"] = summary_warnings(result_data, summaries, start_ts)
|
|
985
985
|
|
|
986
986
|
return history_data
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_integrations.py
RENAMED
|
@@ -354,9 +354,9 @@ async def _fetch_entries_via_component(
|
|
|
354
354
|
return None
|
|
355
355
|
except Exception as exc: # noqa: BLE001
|
|
356
356
|
# DEVIATION (see docstring): the legacy path is pure REST / the REST-client
|
|
357
|
-
# WS bridge, NOT the shared pooled WS. A pooled-WS drop
|
|
358
|
-
# (
|
|
359
|
-
#
|
|
357
|
+
# WS bridge, NOT the shared pooled WS. A pooled-WS drop or a failed
|
|
358
|
+
# (re)connect (HomeAssistantConnectionError), a rejected token
|
|
359
|
+
# (HomeAssistantAuthError) or any other error must fall back to legacy
|
|
360
360
|
# rather than kill the tool.
|
|
361
361
|
logger.warning(
|
|
362
362
|
"%s connection error; falling back to legacy: %r",
|
|
@@ -37,6 +37,7 @@ from .search.overview import (
|
|
|
37
37
|
)
|
|
38
38
|
from .search.response import (
|
|
39
39
|
_compute_eligibility,
|
|
40
|
+
_omit_empty_warnings,
|
|
40
41
|
_ResolvedSearch,
|
|
41
42
|
_validate_search_types,
|
|
42
43
|
)
|
|
@@ -417,9 +418,9 @@ class SearchTools(ComponentSearchMixin, OverviewMixin, StateMixin):
|
|
|
417
418
|
req, ctx, visibility=visibility, caps=caps
|
|
418
419
|
)
|
|
419
420
|
if component_response is not None:
|
|
420
|
-
return component_response
|
|
421
|
+
return _omit_empty_warnings(component_response)
|
|
421
422
|
|
|
422
|
-
return await self._legacy_ha_search(req, ctx)
|
|
423
|
+
return _omit_empty_warnings(await self._legacy_ha_search(req, ctx))
|
|
423
424
|
|
|
424
425
|
@tool(
|
|
425
426
|
name="ha_get_overview",
|
|
@@ -759,10 +760,9 @@ class SearchTools(ComponentSearchMixin, OverviewMixin, StateMixin):
|
|
|
759
760
|
preserved. `attribute_keys=` further narrows the `attributes` sub-dict
|
|
760
761
|
and is only applied when `"attributes"` is in `fields=` (or
|
|
761
762
|
`fields=None`); otherwise it is a no-op and a `warnings` list is emitted
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
only `state`.
|
|
763
|
+
at the top level of the result (sibling of `data`/`metadata`), outside
|
|
764
|
+
the projected record(s), so `fields=["state"]` still returns a record
|
|
765
|
+
with only `state`.
|
|
766
766
|
|
|
767
767
|
EXAMPLES:
|
|
768
768
|
- Single: ha_get_state("light.kitchen")
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/tools/tools_voice_assistant.py
RENAMED
|
@@ -114,7 +114,7 @@ class VoiceAssistantTools:
|
|
|
114
114
|
logger.warning("%s failed; fell back to legacy: %r", WS_EXPOSURE, exc)
|
|
115
115
|
return None
|
|
116
116
|
except Exception as exc: # noqa: BLE001
|
|
117
|
-
# HomeAssistantConnectionError
|
|
117
|
+
# HomeAssistantConnectionError or any other error → legacy (the
|
|
118
118
|
# legacy expose_entity/list read rides the bridge).
|
|
119
119
|
logger.warning(
|
|
120
120
|
"%s connection error; falling back to legacy: %r", WS_EXPOSURE, exc
|
|
@@ -237,12 +237,13 @@ class ZoneTools:
|
|
|
237
237
|
entry, and ``log.warning``.
|
|
238
238
|
- a response that does not authoritatively enumerate ``zone`` (an older
|
|
239
239
|
component with no ``covered_types``): fall back to legacy silently.
|
|
240
|
-
- ``HomeAssistantConnectionError`` (pooled-WS drop
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
240
|
+
- ``HomeAssistantConnectionError`` (pooled-WS drop or a failed (re)connect
|
|
241
|
+
in ``get_websocket_client()``): served from the legacy listing (its
|
|
242
|
+
reads ride the ``send_websocket_message`` bridge, so a transport
|
|
243
|
+
failure surfaces there as a structured error or a listing gap rather
|
|
244
|
+
than dying identically), with a ``warnings[]`` entry + ``log.warning``.
|
|
245
|
+
A token HA rejects (``HomeAssistantAuthError``) takes this branch too,
|
|
246
|
+
but the legacy reads use the same token and fail with it.
|
|
246
247
|
"""
|
|
247
248
|
try:
|
|
248
249
|
raw = await self._send_component_zone_list()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256
RENAMED
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/_install_hints.py
RENAMED
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/_warnings.py
RENAMED
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/app.py
RENAMED
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/approval.py
RENAMED
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/choice.py
RENAMED
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/config.py
RENAMED
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py
RENAMED
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/form.py
RENAMED
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/apps/generative.py
RENAMED
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-9.1.0.dev3271 → ha_mcp_dev-9.1.0.dev3275}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py
RENAMED
|
File without changes
|
|
File without changes
|