ha-mcp-dev 9.1.0.dev3274__tar.gz → 9.1.0.dev3279__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.dev3274 → ha_mcp_dev-9.1.0.dev3279}/PKG-INFO +1 -1
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/pyproject.toml +1 -1
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/pyproject.toml.orig +1 -1
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/rest_client.py +6 -6
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/az.json +2 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/cs.json +2 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/de.json +2 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/eo.json +2 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/es.json +2 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/fr.json +2 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/it.json +2 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/ko.json +2 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/nl.json +2 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/pl.json +2 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/ru.json +2 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/sv.json +2 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/zh-Hans.json +2 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/zh-Hant.json +2 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/blueprint_sources.py +1 -1
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_config_reads.py +7 -7
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_devices.py +1 -1
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_registry_lookup.py +2 -2
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/log_sources_logbook.py +2 -5
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/response_helpers.py +17 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/component.py +3 -1
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/legacy.py +10 -10
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/modes.py +1 -2
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/overview.py +8 -7
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/response.py +13 -13
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/state.py +15 -15
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_config_helpers.py +25 -22
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_dev.py +1 -1
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_entities.py +1 -1
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_history.py +3 -3
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_integrations.py +3 -3
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_search.py +6 -6
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_voice_assistant.py +1 -1
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_zones.py +7 -6
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/LICENSE +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev_security.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/mixins/skills.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/mixins/extensions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/_constants.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/_resources.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/_snapshot.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/_source.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/extension.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/skills/models.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/_request_clock.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/app_discovery.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/auth/iss_stamp.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_dashboards.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_diff.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_entities.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_entity_ids.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_helper_target.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_integrations.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_tags.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_todo.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/backup_zones.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/admin_routes.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/error_log_journald.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/models.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/config_backup.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/config_meta.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/config_overrides.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/config_registry.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/config_settings.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/dashboard_screenshot/engine_compat.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/http_transport.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/image_info.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/ipv6_lan_guard.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/listen_sockets.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/mcp_client_context.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/decision_pin.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/decisions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/events.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/mrtr.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/server_channels.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/server_instructions.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/server_lifespan.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/server_tool_text.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_handlers_oauth_callbacks.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/settings_js/10_oauth_callbacks.js +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/storage_helper_types.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/addon_connection_hints.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/area_messages.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/backup_access.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/backup_on_demand.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/backup_snapshot.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/backup_snapshot_restore.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/bug_report_config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/bug_report_redaction.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/bug_report_sources.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/bug_report_templates.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/coercion.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_helper_collections.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/component_todo.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_backup.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_file_visibility.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/create.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/icon_route.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/update.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_write_errors.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/config_write_helpers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/core_contract.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/dashboard_card_describe.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/dashboard_read_errors.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/dev_backup.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/device_enrichment.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/energy_preferences.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/entity_expose_batch.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/entity_registration.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/entity_removal.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/entity_update_fields.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/flow_helper_lookup.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/hacs_backend.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/helper_flows.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/history_response.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/integration_entry_state.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/recorder_errors.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/scene_discovery.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/search/entities.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/server_version.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/statistics_calendar.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/statistics_helpers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/statistics_resets.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/system_restart.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tool_hints.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/update_categories.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/tools/ws_waiters.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transforms/compact_params.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transforms/component_helpers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transforms/component_search.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transforms/write_tool_note.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/dashboard_patch.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/mcp_client_host.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/registry_update_lock.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/visibility/config_files.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/visibility/identifier_aliases.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/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.dev3279"
|
|
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.dev3279"
|
|
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
|
{ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/az.json
RENAMED
|
@@ -458,6 +458,8 @@
|
|
|
458
458
|
"advanced.max_retries.help": "Uğursuz REST zəngi üçün yenidən cəhd büdcəsi.",
|
|
459
459
|
"advanced.verify_ssl.label": "TLS sertifikatlarını yoxlayın",
|
|
460
460
|
"advanced.verify_ssl.help": "Home Assistant serverinin TLS sertifikatını yoxlayın. Bunu yalnız etibarlı şəbəkədə, özünü imzalayan sertifikat və ya host adı uyğunsuzluğu üçün söndürün: o, nəqliyyat təhlükəsizliyini zəiflədir.",
|
|
461
|
+
"advanced.ipv6_allowed_networks.label": "İcazə verilən əlavə IPv6 şəbəkələri",
|
|
462
|
+
"advanced.ipv6_allowed_networks.help": "IPv6 klientləri bu serverin öz portuna yalnız yerli şəbəkədən daxil olur: loopback, link-local, unique local (fc00::/7) və Home Assistant hostunun birbaşa qoşulduğu şəbəkələr. IPv4 təsirlənmir. İcazə vermək üçün digər IPv6 şəbəkələrini vergül və ya yeni sətirlərlə ayıraraq siyahıya daxil edin (məsələn, 2001:db8:5::/48). ::/0 əlavə etmək marşrutlaşdırıcınız daxil olan IPv6 trafikinə icazə verərsə, internetdən gələnlər də daxil olmaqla bütün IPv6 klientlərinə icazə verir.",
|
|
461
463
|
"advanced.fuzzy_threshold.label": "Qeyri-səlis axtarış həddi",
|
|
462
464
|
"advanced.fuzzy_threshold.help": "Aşağı qiymətlər daha sərbəst obyekt uyğunlaşmasına imkan verir.",
|
|
463
465
|
"advanced.automation_config_time_budget.label": "Avtomatlaşdırma konfiqurasiyaları üçün vaxt limiti (s)",
|
{ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/cs.json
RENAMED
|
@@ -458,6 +458,8 @@
|
|
|
458
458
|
"advanced.max_retries.help": "Rozpočet na opakování pro každé selhání volání REST.",
|
|
459
459
|
"advanced.verify_ssl.label": "Ověřit certifikáty TLS",
|
|
460
460
|
"advanced.verify_ssl.help": "Ověřit certifikát TLS serveru Home Assistant. Vypněte tuto možnost pouze v důvěryhodné síti pro autorsky podepsaný certifikát nebo neshodu názvů hostitelů: oslabuje to zabezpečení přenosu.",
|
|
461
|
+
"advanced.ipv6_allowed_networks.label": "Další povolené sítě IPv6",
|
|
462
|
+
"advanced.ipv6_allowed_networks.help": "Klienti IPv6 přistupují k vlastnímu portu tohoto serveru pouze z lokální sítě: loopback, link-local, unique local (fc00::/7) a sítí, ke kterým je hostitel Home Assistant přímo připojen. IPv4 to neovlivňuje. Uveďte další sítě IPv6, které chcete povolit, oddělené čárkami nebo novými řádky (například 2001:db8:5::/48). Přidáním ::/0 povolíte všechny klienty IPv6, včetně přístupu z internetu, pokud váš router propouští příchozí provoz IPv6.",
|
|
461
463
|
"advanced.fuzzy_threshold.label": "Prahová hodnota fuzzy vyhledávání",
|
|
462
464
|
"advanced.fuzzy_threshold.help": "Nižší hodnoty umožňují volnější shodu entit.",
|
|
463
465
|
"advanced.automation_config_time_budget.label": "Časový rozpočet konfigurace automatizace (s)",
|
{ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/de.json
RENAMED
|
@@ -458,6 +458,8 @@
|
|
|
458
458
|
"advanced.max_retries.help": "Wiederholungsbudget pro fehlgeschlagenem REST-Aufruf.",
|
|
459
459
|
"advanced.verify_ssl.label": "TLS-Zertifikate überprüfen",
|
|
460
460
|
"advanced.verify_ssl.help": "Überprüfe das TLS-Zertifikat des Home Assistant-Servers. Deaktiviere dies nur in einem vertrauenswürdigen Netzwerk, für ein selbstsigniertes Zertifikat oder bei einer Hostnamen-Abweichung: Dies schwächt die Transportsicherheit.",
|
|
461
|
+
"advanced.ipv6_allowed_networks.label": "Zusätzliche erlaubte IPv6-Netzwerke",
|
|
462
|
+
"advanced.ipv6_allowed_networks.help": "IPv6-Clients erreichen den Port dieses Servers nur aus dem lokalen Netzwerk: Loopback, Link-Local, Unique Local (fc00::/7) und die Netzwerke, mit denen der Home Assistant-Host direkt verbunden ist. IPv4 ist nicht betroffen. Liste weitere erlaubte IPv6-Netzwerke auf, getrennt durch Kommas oder neue Zeilen (zum Beispiel 2001:db8:5::/48). Das Hinzufügen von ::/0 erlaubt jeden IPv6-Client, einschließlich aus dem Internet, wenn dein Router eingehenden IPv6-Verkehr durchlässt.",
|
|
461
463
|
"advanced.fuzzy_threshold.label": "Fuzzy-Such-Schwellenwert",
|
|
462
464
|
"advanced.fuzzy_threshold.help": "Niedrigere Werte erlauben einen großzügigeren Entitätsabgleich.",
|
|
463
465
|
"advanced.automation_config_time_budget.label": "Automatisierungskonfigurations-Zeitbudget (s)",
|
{ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/eo.json
RENAMED
|
@@ -458,6 +458,8 @@
|
|
|
458
458
|
"advanced.max_retries.help": "Buĝeto de reprovoj po malsukcesa REST-voko.",
|
|
459
459
|
"advanced.verify_ssl.label": "Konfirmi TLS-atestilojn",
|
|
460
460
|
"advanced.verify_ssl.help": "Konfirmi la TLS-atestilon de la servilo de Home Assistant. Malŝaltu ĉi tion nur ĉe fidinda reto, por memsubskribita atestilo aŭ mita gastnomo: ĝi malfortigas transportan sekurecon.",
|
|
461
|
+
"advanced.ipv6_allowed_networks.label": "Kromaj permesitaj retoj IPv6",
|
|
462
|
+
"advanced.ipv6_allowed_networks.help": "Klientoj IPv6 atingas la propran pordon de ĉi tiu servilo nur el la loka reto: loka buko, liglokala, unika loka (fc00::/7) kaj la retoj al kiuj la gastiganto de Home Assistant estas rekte konektita. IPv4 ne estas tuŝita. Listigu aliajn retojn IPv6 por permesi, apartigite per komoj aŭ novaj linioj (ekzemple 2001:db8:5::/48). Aldono de ::/0 permesas ĉiun klienton IPv6, inkluzive de tiu el la interreto se via enkursigilo tralasas envenantajn IPv6.",
|
|
461
463
|
"advanced.fuzzy_threshold.label": "Sojlo de neklara serĉo",
|
|
462
464
|
"advanced.fuzzy_threshold.help": "Pli malaltaj valoroj permesas pli malstriktan entan kongruon.",
|
|
463
465
|
"advanced.automation_config_time_budget.label": "Tempa buĝeto por aŭtomatiga agordo (s)",
|
{ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/es.json
RENAMED
|
@@ -458,6 +458,8 @@
|
|
|
458
458
|
"advanced.max_retries.help": "Presupuesto de reintentos por cada llamada REST fallida.",
|
|
459
459
|
"advanced.verify_ssl.label": "Verificar certificados TLS",
|
|
460
460
|
"advanced.verify_ssl.help": "Verificar el certificado TLS del servidor de Home Assistant. Desactiva esto solo en una red de confianza, para un certificado autofirmado o un desajuste de nombre de host: esto debilita la seguridad del transporte.",
|
|
461
|
+
"advanced.ipv6_allowed_networks.label": "Redes IPv6 adicionales permitidas",
|
|
462
|
+
"advanced.ipv6_allowed_networks.help": "Los clientes IPv6 llegan al puerto propio de este servidor solo desde la red local: bucle local (loopback), enlace local (link-local), locales únicas (fc00::/7) y las redes a las que el host de Home Assistant está conectado directamente. IPv4 no se ve afectado. Lista otras redes IPv6 para permitir, separadas por comas o saltos de línea (por ejemplo, 2001:db8:5::/48). Agregar ::/0 permite a cualquier cliente IPv6, incluso desde internet si tu router permite tráfico IPv6 entrante.",
|
|
461
463
|
"advanced.fuzzy_threshold.label": "Umbral de la búsqueda difusa",
|
|
462
464
|
"advanced.fuzzy_threshold.help": "Los valores más bajos permiten una coincidencia de entidades más flexible.",
|
|
463
465
|
"advanced.automation_config_time_budget.label": "Presupuesto de tiempo para la configuración de automatizaciones (s)",
|
{ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/fr.json
RENAMED
|
@@ -458,6 +458,8 @@
|
|
|
458
458
|
"advanced.max_retries.help": "Budget de nouvelles tentatives par appel REST échoué.",
|
|
459
459
|
"advanced.verify_ssl.label": "Vérifier les certificats TLS",
|
|
460
460
|
"advanced.verify_ssl.help": "Vérifie le certificat TLS du serveur Home Assistant. Ne désactivez cette option que sur un réseau de confiance, pour un certificat auto-signé ou une non-correspondance de nom d'hôte : cela affaiblit la sécurité du transport.",
|
|
461
|
+
"advanced.ipv6_allowed_networks.label": "Réseaux IPv6 supplémentaires autorisés",
|
|
462
|
+
"advanced.ipv6_allowed_networks.help": "Les clients IPv6 atteignent le port propre de ce serveur uniquement depuis le réseau local : bouclage (loopback), lien local (link-local), unique local (fc00::/7) et les réseaux auxquels l'hôte Home Assistant est directement connecté. L'IPv4 n'est pas affectée. Listez les autres réseaux IPv6 à autoriser, séparés par des virgules ou des retours à la ligne (par exemple 2001:db8:5::/48). Ajouter ::/0 autorise tous les clients IPv6, y compris depuis Internet si votre routeur laisse passer le trafic IPv6 entrant.",
|
|
461
463
|
"advanced.fuzzy_threshold.label": "Seuil de recherche floue",
|
|
462
464
|
"advanced.fuzzy_threshold.help": "Des valeurs plus faibles permettent une correspondance d'entités plus souple.",
|
|
463
465
|
"advanced.automation_config_time_budget.label": "Budget de temps de configuration d'automatisation (s)",
|
{ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/it.json
RENAMED
|
@@ -458,6 +458,8 @@
|
|
|
458
458
|
"advanced.max_retries.help": "Budget di tentativi per chiamata REST non riuscita.",
|
|
459
459
|
"advanced.verify_ssl.label": "Verifica i certificati TLS",
|
|
460
460
|
"advanced.verify_ssl.help": "Verifica il certificato TLS del server Home Assistant. Disattiva questa opzione solo su una rete affidabile, per un certificato autofirmato o una mancata corrispondenza del nome host: indebolisce la sicurezza del trasporto.",
|
|
461
|
+
"advanced.ipv6_allowed_networks.label": "Reti IPv6 extra consentite",
|
|
462
|
+
"advanced.ipv6_allowed_networks.help": "I client IPv6 raggiungono la porta di questo server solo dalla rete locale: loopback, link-local, unique local (fc00::/7) e le reti a cui l'host di Home Assistant è direttamente connesso. L'IPv4 non è interessato. Elenca altre reti IPv6 da consentire, separate da virgole o nuove righe (ad esempio 2001:db8:5::/48). L'aggiunta di ::/0 consente qualsiasi client IPv6, anche da Internet se il tuo router lascia passare il traffico IPv6 in ingresso.",
|
|
461
463
|
"advanced.fuzzy_threshold.label": "Soglia della ricerca approssimata",
|
|
462
464
|
"advanced.fuzzy_threshold.help": "Valori più bassi consentono una corrispondenza delle entità meno rigida.",
|
|
463
465
|
"advanced.automation_config_time_budget.label": "Tempo massimo per le configurazioni delle automazioni (s)",
|
{ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/ko.json
RENAMED
|
@@ -458,6 +458,8 @@
|
|
|
458
458
|
"advanced.max_retries.help": "실패한 REST 호출당 재시도 예산.",
|
|
459
459
|
"advanced.verify_ssl.label": "TLS 인증서 확인",
|
|
460
460
|
"advanced.verify_ssl.help": "Home Assistant 서버의 TLS 인증서를 확인합니다. 자체 서명된 인증서나 호스트 이름 불일치의 경우에만 신뢰할 수 있는 네트워크에서 이 기능을 끄십시오. 전송 보안이 약화됩니다.",
|
|
461
|
+
"advanced.ipv6_allowed_networks.label": "허용할 추가 IPv6 네트워크",
|
|
462
|
+
"advanced.ipv6_allowed_networks.help": "IPv6 클라이언트는 루프백, 링크 로컬, 고유 로컬(fc00::/7) 및 Home Assistant 호스트가 직접 연결된 네트워크와 같은 로컬 네트워크에서만 이 서버의 자체 포트에 접근할 수 있습니다. IPv4는 영향을 받지 않습니다. 쉼표나 줄바꿈으로 구분하여 허용할 다른 IPv6 네트워크를 나열하세요(예: 2001:db8:5::/48). ::/0을 추가하면 라우터가 인바운드 IPv6를 허용하는 경우 인터넷을 포함한 모든 IPv6 클라이언트가 허용됩니다.",
|
|
461
463
|
"advanced.fuzzy_threshold.label": "유사 검색 임계값",
|
|
462
464
|
"advanced.fuzzy_threshold.help": "낮은 값을 설정할수록 더 느슨한 엔티티 일치가 허용됩니다.",
|
|
463
465
|
"advanced.automation_config_time_budget.label": "자동화 설정 조회 시간 예산(초)",
|
{ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/nl.json
RENAMED
|
@@ -458,6 +458,8 @@
|
|
|
458
458
|
"advanced.max_retries.help": "Pogingenbudget per mislukte REST-aanroep.",
|
|
459
459
|
"advanced.verify_ssl.label": "TLS-certificaten verifiëren",
|
|
460
460
|
"advanced.verify_ssl.help": "Verifieer het TLS-certificaat van de Home Assistant-server. Schakel dit alleen uit op een vertrouwd netwerk, voor een zelfondertekend certificaat of een hostnaamafwijking: dit verzwakt de transportbeveiliging.",
|
|
461
|
+
"advanced.ipv6_allowed_networks.label": "Extra toegestane IPv6-netwerken",
|
|
462
|
+
"advanced.ipv6_allowed_networks.help": "IPv6-clients bereiken de eigen poort van deze server alleen vanuit het lokale netwerk: loopback, link-local, unique local (fc00::/7) en de netwerken waarmee de Home Assistant-host direct is verbonden. IPv4 blijft ongewijzigd. Vermeld andere toe te staan IPv6-netwerken, gescheiden door komma's of nieuwe regels (bijvoorbeeld 2001:db8:5::/48). Het toevoegen van ::/0 staat elke IPv6-client toe, ook vanaf het internet als je router inkomend IPv6 doorlaat.",
|
|
461
463
|
"advanced.fuzzy_threshold.label": "Fuzzy-zoekdrempel",
|
|
462
464
|
"advanced.fuzzy_threshold.help": "Lagere waarden staan lossere entiteitsovereenkomsten toe.",
|
|
463
465
|
"advanced.automation_config_time_budget.label": "Tijdsbudget voor automatiseringsconfiguratie (s)",
|
{ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/pl.json
RENAMED
|
@@ -458,6 +458,8 @@
|
|
|
458
458
|
"advanced.max_retries.help": "Budżet ponowień dla nieudanego wywołania REST.",
|
|
459
459
|
"advanced.verify_ssl.label": "Weryfikuj certyfikaty TLS",
|
|
460
460
|
"advanced.verify_ssl.help": "Weryfikuje certyfikat TLS serwera Home Assistant. Wyłącz tę opcję tylko w zaufanej sieci, dla certyfikatu z podpisem własnym lub niezgodności nazwy hosta: osłabia to bezpieczeństwo transportu.",
|
|
461
|
+
"advanced.ipv6_allowed_networks.label": "Dodatkowe dozwolone sieci IPv6",
|
|
462
|
+
"advanced.ipv6_allowed_networks.help": "Klienci IPv6 mogą łączyć się z własnym portem tego serwera tylko z sieci lokalnej: loopback, link-local, unique local (fc00::/7) oraz sieci, z którymi host Home Assistant jest bezpośrednio połączony. Protokół IPv4 nie jest tym objęty. Wymień inne sieci IPv6, które chcesz dopuścić, oddzielając je przecinkami lub nowymi liniami (na przykład 2001:db8:5::/48). Dodanie ::/0 zezwala każdemu klientowi IPv6, w tym z internetu, jeśli Twój router przepuszcza ruch przychodzący IPv6.",
|
|
461
463
|
"advanced.fuzzy_threshold.label": "Próg wyszukiwania rozmytego",
|
|
462
464
|
"advanced.fuzzy_threshold.help": "Niższe wartości pozwalają na luźniejsze dopasowywanie encji.",
|
|
463
465
|
"advanced.automation_config_time_budget.label": "Limit czasu konfiguracji automatyzacji (s)",
|
{ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/ru.json
RENAMED
|
@@ -458,6 +458,8 @@
|
|
|
458
458
|
"advanced.max_retries.help": "Бюджет повторных попыток для каждого неудачного REST-вызова.",
|
|
459
459
|
"advanced.verify_ssl.label": "Проверять TLS-сертификаты",
|
|
460
460
|
"advanced.verify_ssl.help": "Проверять TLS-сертификат сервера Home Assistant. Отключайте это только в доверенной сети для самоподписанного сертификата или несовпадения имени хоста: это снижает безопасность передачи данных.",
|
|
461
|
+
"advanced.ipv6_allowed_networks.label": "Дополнительные разрешенные сети IPv6",
|
|
462
|
+
"advanced.ipv6_allowed_networks.help": "Клиенты IPv6 могут обращаться к собственному порту этого сервера только из локальной сети: loopback, link-local, unique local (fc00::/7) и сетей, к которым напрямую подключен хост Home Assistant. IPv4 это не затрагивает. Перечислите другие разрешенные сети IPv6 через запятую или с новой строки (например, 2001:db8:5::/48). Добавление ::/0 разрешает доступ всем клиентам IPv6, включая интернет, если ваш роутер пропускает входящий трафик IPv6.",
|
|
461
463
|
"advanced.fuzzy_threshold.label": "Порог нечёткого поиска",
|
|
462
464
|
"advanced.fuzzy_threshold.help": "Меньшие значения допускают более нечеткое сопоставление сущностей.",
|
|
463
465
|
"advanced.automation_config_time_budget.label": "Бюджет времени конфигураций автоматизаций (с)",
|
{ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/sv.json
RENAMED
|
@@ -458,6 +458,8 @@
|
|
|
458
458
|
"advanced.max_retries.help": "Antal tillåtna försök per misslyckat REST-anrop.",
|
|
459
459
|
"advanced.verify_ssl.label": "Verifiera TLS-certifikat",
|
|
460
460
|
"advanced.verify_ssl.help": "Verifiera Home Assistant-serverns TLS-certifikat. Stäng bara av detta på ett betrott nätverk, för ett självsignerat certifikat eller om värdnamnet inte matchar: det försvagar transportsäkerheten.",
|
|
461
|
+
"advanced.ipv6_allowed_networks.label": "Extra IPv6-nätverk som tillåts",
|
|
462
|
+
"advanced.ipv6_allowed_networks.help": "IPv6-klienter når denna servers egen port endast från det lokala nätverket: loopback, link-local, unique local (fc00::/7) och de nätverk som Home Assistant-värden är direkt ansluten till. IPv4 påverkas inte. Lista andra IPv6-nätverk att tillåta, separerade med kommatecken eller nya rader (till exempel 2001:db8:5::/48). Att lägga till ::/0 tillåter alla IPv6-klienter, inklusive från internet om din router släpper igenom inkommande IPv6.",
|
|
461
463
|
"advanced.fuzzy_threshold.label": "Fuzzy-sökningströskel",
|
|
462
464
|
"advanced.fuzzy_threshold.help": "Lägre värden tillåter mer tillåtande entitetsmatchning.",
|
|
463
465
|
"advanced.automation_config_time_budget.label": "Tidsbudget för automatiseringskonfiguration (s)",
|
{ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/zh-Hans.json
RENAMED
|
@@ -458,6 +458,8 @@
|
|
|
458
458
|
"advanced.max_retries.help": "每次失败的 REST 调用的重试预算。",
|
|
459
459
|
"advanced.verify_ssl.label": "验证 TLS 证书",
|
|
460
460
|
"advanced.verify_ssl.help": "验证 Home Assistant 服务器的 TLS 证书。仅在受信任的网络上、针对自签名证书或主机名不匹配的情况关闭此选项:这会削弱传输安全性。",
|
|
461
|
+
"advanced.ipv6_allowed_networks.label": "允许的额外 IPv6 网络",
|
|
462
|
+
"advanced.ipv6_allowed_networks.help": "IPv6 客户端仅能从本地网络访问该服务器自身的端口:回环、链路本地、唯一本地(fc00::/7)以及 Home Assistant 主机直接连接的网络。IPv4 不受影响。请列出需要允许的其他 IPv6 网络,以逗号或换行符分隔(例如 2001:db8:5::/48)。添加 ::/0 将允许所有 IPv6 客户端,如果您的路由器允许入站 IPv6 流量,则也包括来自互联网的客户端。",
|
|
461
463
|
"advanced.fuzzy_threshold.label": "模糊搜索阈值",
|
|
462
464
|
"advanced.fuzzy_threshold.help": "较低的值允许更宽松的实体匹配。",
|
|
463
465
|
"advanced.automation_config_time_budget.label": "自动化配置时间预算(秒)",
|
{ha_mcp_dev-9.1.0.dev3274 → ha_mcp_dev-9.1.0.dev3279}/src/ha_mcp/settings_ui/locales/zh-Hant.json
RENAMED
|
@@ -458,6 +458,8 @@
|
|
|
458
458
|
"advanced.max_retries.help": "每個失敗 REST 呼叫的重試預算。",
|
|
459
459
|
"advanced.verify_ssl.label": "驗證 TLS 憑證",
|
|
460
460
|
"advanced.verify_ssl.help": "驗證 Home Assistant 伺服器的 TLS 憑證。僅在受信賴的網路、針對自簽憑證或主機名稱不符的情況下關閉此功能:這會削弱傳輸安全性。",
|
|
461
|
+
"advanced.ipv6_allowed_networks.label": "允許的額外 IPv6 網路",
|
|
462
|
+
"advanced.ipv6_allowed_networks.help": "IPv6 用戶端僅能從本機網路存取此伺服器本身的連接埠:回送(loopback)、鏈路本機(link-local)、唯一本機(fc00::/7)以及 Home Assistant 主機直接連接的網路。IPv4 不受影響。列出要允許的其他 IPv6 網路,以逗號或新行分隔(例如 2001:db8:5::/48)。新增 ::/0 將允許所有 IPv6 用戶端,若您的路由器允許入站 IPv6,也包含來自網際網路的用戶端。",
|
|
461
463
|
"advanced.fuzzy_threshold.label": "模糊搜尋閾值",
|
|
462
464
|
"advanced.fuzzy_threshold.help": "較低的值允許較寬鬆的實體比對。",
|
|
463
465
|
"advanced.automation_config_time_budget.label": "自動化設定時間預算(秒)",
|
|
@@ -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.dev3274 → ha_mcp_dev-9.1.0.dev3279}/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.dev3274 → ha_mcp_dev-9.1.0.dev3279}/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.dev3274 → ha_mcp_dev-9.1.0.dev3279}/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.dev3274 → ha_mcp_dev-9.1.0.dev3279}/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
|