ha-mcp-dev 8.4.3.dev2650__tar.gz → 8.4.3.dev2652__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-8.4.3.dev2650/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.4.3.dev2652}/PKG-INFO +1 -1
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/pyproject.toml +1 -1
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/component_config_reads.py +16 -26
- ha_mcp_dev-8.4.3.dev2652/src/ha_mcp/tools/entity_registration.py +133 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_config_scenes.py +25 -57
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_config_scripts.py +46 -92
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp_dev.egg-info/SOURCES.txt +1 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/MANIFEST.in +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/setup.cfg +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/http_transport.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/evals/area-target-over-entity-list/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/evals/arrive-home-automation/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/evals/assist-shortcut-card/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/evals/avg-temperature/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/evals/backup-deletion-confirmation/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/evals/blueprint-authoring/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/evals/button-event-entity/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/evals/device-id-trigger-migration/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/evals/helper-flow-fields-not-platform-yaml/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/evals/media-player-song/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/evals/motion-light-automation-mode/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/evals/rename-entity-impact-analysis/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/evals/template-attributes-yaml-exception/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/evals/timer-finished-automation/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/evals/vacuum-last-clean/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/scripts/check_eval_cases.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/blueprint_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/utils/dashboard_patch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/tests/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/tests/test_constants.py +0 -0
- {ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/tests/test_env_manager.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "8.4.3.
|
|
7
|
+
version = "8.4.3.dev2652"
|
|
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
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/component_config_reads.py
RENAMED
|
@@ -3,19 +3,14 @@
|
|
|
3
3
|
Two consumers in the automation/script/scene family pay for a whole-collection
|
|
4
4
|
fetch to answer a single question:
|
|
5
5
|
|
|
6
|
-
-
|
|
7
|
-
``
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
instant it returns (no settle). An in-process read removes the network latency
|
|
15
|
-
but NOT HA's async entity-registration lag, so the scene resolver still
|
|
16
|
-
rechecks an EMPTY result ONCE after the same short delay before its naive
|
|
17
|
-
fallback (the automation resolver has no post-upsert lag exposure — its only
|
|
18
|
-
routed call site resolves an already-registered entity before a delete).
|
|
6
|
+
- Entity resolution maps storage keys to live registry entity IDs.
|
|
7
|
+
``entity_registration.resolve_entity_id_after_write`` polls after scene/script
|
|
8
|
+
writes against one deadline. ``_resolve_scene_entity_id`` uses a single retry
|
|
9
|
+
before scene removal; ``_resolve_automation_entity_id`` resolves an existing
|
|
10
|
+
entity before deletion. The component's ``entity_lookup`` returns only matching
|
|
11
|
+
rows instead of a full registry/state listing. A hit is authoritative at once,
|
|
12
|
+
but an empty read can precede HA's asynchronous entity registration even when
|
|
13
|
+
performed in-process, so post-write callers must continue polling.
|
|
19
14
|
- The reference validator (``validate_config_references``) fetches BOTH
|
|
20
15
|
``client.get_services()`` and ``client.get_states()`` on every automation/script
|
|
21
16
|
write purely to build a name index. When the component advertises
|
|
@@ -40,16 +35,11 @@ path runs, NEVER propagated out of the read. Neither consumer's legacy path dies
|
|
|
40
35
|
identically on a pooled-WS drop, so propagating would abort work the legacy path
|
|
41
36
|
still completes:
|
|
42
37
|
|
|
43
|
-
- ``fetch_entity_lookup_via_component``
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
the automation resolver scans REST
|
|
49
|
-
``get_states()`` and additionally catches broadly → ``None``. Its only routed
|
|
50
|
-
call sites run AFTER a scene/automation upsert commits or BEFORE a REST delete,
|
|
51
|
-
so an escaping transport error would report a landed write as failed / abort a
|
|
52
|
-
delete the REST path would have finished.
|
|
38
|
+
- ``fetch_entity_lookup_via_component`` consumers fall back to the legacy
|
|
39
|
+
WebSocket registry bridge or REST state reads. The post-write resolver catches
|
|
40
|
+
known API/transport failures and retains a best-effort entity ID; later wait
|
|
41
|
+
and category operations report any verification or assignment failure. Removal
|
|
42
|
+
resolvers retain their own error policies.
|
|
53
43
|
- ``fetch_reference_data_via_component``'s legacy path is the REST
|
|
54
44
|
``get_services()`` / ``get_states()`` pair; an escaping transport error would
|
|
55
45
|
make ``validate_config_references`` hit its swallow-all fetch guard and skip
|
|
@@ -58,9 +48,9 @@ still completes:
|
|
|
58
48
|
**GET-path invariant:** the automation/script/scene *config-get* tools must never
|
|
59
49
|
route through the component — their in-process ``raw_config`` freshness lags the
|
|
60
50
|
config file between a write and the next completed reload. The resolvers gate the
|
|
61
|
-
whole component branch (caps probe included) behind
|
|
62
|
-
|
|
63
|
-
|
|
51
|
+
whole component branch (caps probe included) behind ``allow_component`` for
|
|
52
|
+
removals. The dedicated post-write resolver is never called from a config-get.
|
|
53
|
+
``TestConfigGetSeam`` pins this.
|
|
64
54
|
"""
|
|
65
55
|
|
|
66
56
|
from __future__ import annotations
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"""Resolve storage keys after writes while Home Assistant registers entities."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
import logging
|
|
5
|
+
import time
|
|
6
|
+
from typing import Any, Literal
|
|
7
|
+
|
|
8
|
+
from ..client.rest_client import (
|
|
9
|
+
HomeAssistantAPIError,
|
|
10
|
+
HomeAssistantAuthError,
|
|
11
|
+
HomeAssistantConnectionError,
|
|
12
|
+
)
|
|
13
|
+
from .component_config_reads import fetch_entity_lookup_via_component
|
|
14
|
+
|
|
15
|
+
logger = logging.getLogger(__name__)
|
|
16
|
+
|
|
17
|
+
# A bounded registration budget, not a fixed delay: existing entries return on
|
|
18
|
+
# the first lookup. Keep this separate from the subsequent state-availability
|
|
19
|
+
# wait, which cannot discover a name-derived or registry-renamed entity ID.
|
|
20
|
+
RESOLVE_TIMEOUT = 5.0
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _matching_entity_id(
|
|
24
|
+
entries: list[dict[str, Any]], storage_key: str, domain: Literal["scene", "script"]
|
|
25
|
+
) -> str | None:
|
|
26
|
+
"""UI scenes belong to platform homeassistant; scripts belong to script."""
|
|
27
|
+
platform = "homeassistant" if domain == "scene" else "script"
|
|
28
|
+
for entry in entries:
|
|
29
|
+
entity_id = entry.get("entity_id") or ""
|
|
30
|
+
if (
|
|
31
|
+
entry.get("unique_id") == storage_key
|
|
32
|
+
and entry.get("platform") == platform
|
|
33
|
+
and entity_id.startswith(f"{domain}.")
|
|
34
|
+
):
|
|
35
|
+
return str(entity_id)
|
|
36
|
+
return None
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
async def _lookup_entity_id(
|
|
40
|
+
client: Any, storage_key: str, domain: Literal["scene", "script"]
|
|
41
|
+
) -> str | None:
|
|
42
|
+
"""Read once; an unavailable component falls back to the legacy registry."""
|
|
43
|
+
matches = await fetch_entity_lookup_via_component(
|
|
44
|
+
client, storage_key, domain=domain
|
|
45
|
+
)
|
|
46
|
+
if matches is None:
|
|
47
|
+
if domain == "script":
|
|
48
|
+
direct = await client.send_websocket_message(
|
|
49
|
+
{
|
|
50
|
+
"type": "config/entity_registry/get",
|
|
51
|
+
"entity_id": f"script.{storage_key}",
|
|
52
|
+
}
|
|
53
|
+
)
|
|
54
|
+
row = direct.get("result")
|
|
55
|
+
if direct.get("success") and isinstance(row, dict):
|
|
56
|
+
entity_id = _matching_entity_id([row], storage_key, domain)
|
|
57
|
+
if entity_id is not None:
|
|
58
|
+
return entity_id
|
|
59
|
+
listing = await client.send_websocket_message(
|
|
60
|
+
{"type": "config/entity_registry/list"}
|
|
61
|
+
)
|
|
62
|
+
if listing.get("success") is False:
|
|
63
|
+
raise HomeAssistantAPIError(
|
|
64
|
+
f"Entity registry lookup failed: {listing.get('error')} "
|
|
65
|
+
f"(code={listing.get('error_code')})"
|
|
66
|
+
)
|
|
67
|
+
matches = listing.get("result") or []
|
|
68
|
+
return _matching_entity_id(matches, storage_key, domain)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
async def resolve_entity_id_after_write(
|
|
72
|
+
client: Any,
|
|
73
|
+
storage_key: str,
|
|
74
|
+
domain: Literal["scene", "script"],
|
|
75
|
+
*,
|
|
76
|
+
timeout: float | None = None,
|
|
77
|
+
poll_interval: float = 0.2,
|
|
78
|
+
fallback_entity_id: str | None = None,
|
|
79
|
+
) -> str:
|
|
80
|
+
"""Poll for the actual entity ID before a post-write wait/category update.
|
|
81
|
+
|
|
82
|
+
An empty registry read can precede asynchronous registration even inside
|
|
83
|
+
the component. Retry against one deadline, checking component availability
|
|
84
|
+
on every attempt. A positive budget includes in-flight lookups and sleeps;
|
|
85
|
+
zero requests one lookup without a time limit, for test fixtures. Known
|
|
86
|
+
API failures retain the best-effort fallback. Errors escaping the component
|
|
87
|
+
adapter propagate unless listed below; cancellation always propagates.
|
|
88
|
+
``fallback_entity_id`` overrides the constructed ID on failure; registry
|
|
89
|
+
matching always uses the storage key.
|
|
90
|
+
|
|
91
|
+
Config reads and removals must use their existing resolution paths. Bulk
|
|
92
|
+
writes with neither a state wait nor a category update should skip this
|
|
93
|
+
helper entirely. The optional budget and interval support deterministic
|
|
94
|
+
tests without extending production waits.
|
|
95
|
+
"""
|
|
96
|
+
storage_key = storage_key.removeprefix(f"{domain}.")
|
|
97
|
+
fallback = fallback_entity_id or f"{domain}.{storage_key}"
|
|
98
|
+
budget = RESOLVE_TIMEOUT if timeout is None else timeout
|
|
99
|
+
deadline = time.monotonic() + budget
|
|
100
|
+
try:
|
|
101
|
+
async with asyncio.timeout(budget if budget > 0 else None):
|
|
102
|
+
while True:
|
|
103
|
+
entity_id = await _lookup_entity_id(client, storage_key, domain)
|
|
104
|
+
if entity_id is not None:
|
|
105
|
+
return entity_id
|
|
106
|
+
remaining = deadline - time.monotonic()
|
|
107
|
+
if remaining <= 0:
|
|
108
|
+
break
|
|
109
|
+
await asyncio.sleep(min(poll_interval, remaining))
|
|
110
|
+
if time.monotonic() >= deadline:
|
|
111
|
+
break
|
|
112
|
+
except (
|
|
113
|
+
TimeoutError,
|
|
114
|
+
HomeAssistantAPIError,
|
|
115
|
+
HomeAssistantAuthError,
|
|
116
|
+
HomeAssistantConnectionError,
|
|
117
|
+
) as exc:
|
|
118
|
+
logger.warning(
|
|
119
|
+
"Post-write registry resolve failed for %s.%s (%s: %s); using %s",
|
|
120
|
+
domain,
|
|
121
|
+
storage_key,
|
|
122
|
+
type(exc).__name__,
|
|
123
|
+
exc,
|
|
124
|
+
fallback,
|
|
125
|
+
)
|
|
126
|
+
else:
|
|
127
|
+
logger.debug(
|
|
128
|
+
"Post-write registry budget exhausted for %s.%s; using %s",
|
|
129
|
+
domain,
|
|
130
|
+
storage_key,
|
|
131
|
+
fallback,
|
|
132
|
+
)
|
|
133
|
+
return fallback
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_config_scenes.py
RENAMED
|
@@ -32,6 +32,7 @@ from ..utils.python_sandbox import (
|
|
|
32
32
|
)
|
|
33
33
|
from .auto_backup import with_auto_backup
|
|
34
34
|
from .component_config_reads import fetch_entity_lookup_via_component
|
|
35
|
+
from .entity_registration import resolve_entity_id_after_write
|
|
35
36
|
from .helpers import (
|
|
36
37
|
exception_to_structured_error,
|
|
37
38
|
log_tool_usage,
|
|
@@ -115,10 +116,8 @@ class ConfigSceneTools:
|
|
|
115
116
|
def __init__(self, client: Any) -> None:
|
|
116
117
|
self._client = client
|
|
117
118
|
|
|
118
|
-
#
|
|
119
|
-
#
|
|
120
|
-
# attribute so tests can patch it down to ``0`` instead of waiting 200 ms
|
|
121
|
-
# in suite runs.
|
|
119
|
+
# Short retry retained for config reads and removals; post-write polling
|
|
120
|
+
# has its own deadline in entity_registration.
|
|
122
121
|
_RESOLVE_RETRY_DELAY = 0.2
|
|
123
122
|
|
|
124
123
|
@staticmethod
|
|
@@ -133,53 +132,19 @@ class ConfigSceneTools:
|
|
|
133
132
|
async def _resolve_scene_entity_id(
|
|
134
133
|
self, scene_id: str, *, allow_component: bool = False
|
|
135
134
|
) -> str:
|
|
136
|
-
"""Resolve
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
On a freshly-upserted scene the registry can lag the storage write
|
|
151
|
-
by tens to ~200 ms — the first query returns no match and the naive
|
|
152
|
-
``scene.{scene_id}`` fallback is then chased by
|
|
153
|
-
``wait_for_entity_registered`` to its phantom-404 timeout. Retry
|
|
154
|
-
the registry list once after a short delay so the post-upsert
|
|
155
|
-
callsites see the real entity_id instead of trailing the lookup
|
|
156
|
-
with a phantom (issue #1168 R3 blocker 1).
|
|
157
|
-
|
|
158
|
-
When ``allow_component`` (set/remove/post-write call sites only — a
|
|
159
|
-
config-get must never route through the component, see
|
|
160
|
-
``component_config_reads`` and ``TestConfigGetSeam``) AND the component
|
|
161
|
-
advertises ``entity_lookup``, one in-process
|
|
162
|
-
``entity_lookup(unique_id=scene_id, domain="scene")`` frame replaces the
|
|
163
|
-
whole-registry dump. A hit returns immediately — the in-process read
|
|
164
|
-
needs no settle. But an EMPTY result right after an upsert can be HA's
|
|
165
|
-
async entity-registration lag (#1168) rather than a true absence: the
|
|
166
|
-
in-process read removes the network latency, not the registration lag
|
|
167
|
-
(the upsert and this resolve are separate round-trips). So an empty
|
|
168
|
-
result is rechecked ONCE after ``_RESOLVE_RETRY_DELAY`` — the same delay
|
|
169
|
-
the legacy path uses — before the naive ``scene.{scene_id}`` fallback. If the recheck answers
|
|
170
|
-
AUTHORITATIVELY (component still available) its verdict is final: a hit is
|
|
171
|
-
returned, a genuine empty falls to the naive guess. But if the recheck
|
|
172
|
-
itself returns ``None`` (component went unavailable / errored / downgraded
|
|
173
|
-
mid-retry) the first empty read is NOT authoritative, so resolution drops
|
|
174
|
-
to the legacy list+retry path below (its own retry absorbs the same lag)
|
|
175
|
-
rather than trusting the empty and guessing.
|
|
176
|
-
The component unavailable / errored ⇒ the legacy list+retry path below
|
|
177
|
-
runs unchanged; that is the FIRST-read case (issue #1813 Phase 2).
|
|
178
|
-
|
|
179
|
-
Accepts a bare ``scene_id`` ("movie_night") or a fully-qualified
|
|
180
|
-
``entity_id`` ("scene.movie_night") — the leading ``scene.`` is
|
|
181
|
-
stripped so callers don't accidentally produce ``scene.scene.movie_night``
|
|
182
|
-
on fallback. Mirrors ``rest_client.resolve_scene_id`` ergonomics.
|
|
135
|
+
"""Resolve the entity ID for config reads and removals, with one retry.
|
|
136
|
+
|
|
137
|
+
HA derives scene entity IDs from the name; the storage key remains
|
|
138
|
+
the registry unique_id. Match that key instead of assuming the slug.
|
|
139
|
+
Accept either a bare key or a key prefixed with ``scene.``.
|
|
140
|
+
|
|
141
|
+
Only removals enable ``allow_component``. Config reads use the legacy
|
|
142
|
+
registry path to preserve the GET-path invariant documented in
|
|
143
|
+
``component_config_reads``. An empty component result is rechecked
|
|
144
|
+
once; component unavailability falls through to the legacy path.
|
|
145
|
+
|
|
146
|
+
Post-write waits and categories use ``resolve_entity_id_after_write``:
|
|
147
|
+
their registration window requires deadline-based polling (#2426).
|
|
183
148
|
"""
|
|
184
149
|
scene_id = scene_id.removeprefix("scene.")
|
|
185
150
|
if allow_component:
|
|
@@ -197,8 +162,7 @@ class ConfigSceneTools:
|
|
|
197
162
|
non-authoritative (capability miss, or the recheck went
|
|
198
163
|
unavailable/errored mid-retry), so the caller falls through to the
|
|
199
164
|
legacy registry list+retry path. ``scene_id`` must already have its
|
|
200
|
-
``scene.`` prefix stripped
|
|
201
|
-
full lag-vs-absence reasoning.
|
|
165
|
+
``scene.`` prefix stripped.
|
|
202
166
|
"""
|
|
203
167
|
matches = await fetch_entity_lookup_via_component(
|
|
204
168
|
self._client, scene_id, domain="scene"
|
|
@@ -871,8 +835,10 @@ class ConfigSceneTools:
|
|
|
871
835
|
# post-upsert finalisation the full-config branch runs. Without
|
|
872
836
|
# these, ``wait`` and ``category`` are silently dropped on
|
|
873
837
|
# python_transform calls.
|
|
874
|
-
entity_id =
|
|
875
|
-
resolved_id,
|
|
838
|
+
entity_id = (
|
|
839
|
+
await resolve_entity_id_after_write(self._client, resolved_id, "scene")
|
|
840
|
+
if wait or category
|
|
841
|
+
else f"scene.{resolved_id}"
|
|
876
842
|
)
|
|
877
843
|
if wait:
|
|
878
844
|
try:
|
|
@@ -1152,8 +1118,10 @@ class ConfigSceneTools:
|
|
|
1152
1118
|
# Resolve actual entity_id via registry — HA derives scene
|
|
1153
1119
|
# entity_ids from the 'name' slug, not the scene_id storage key,
|
|
1154
1120
|
# so f"scene.{scene_id}" is wrong whenever a name is supplied.
|
|
1155
|
-
entity_id =
|
|
1156
|
-
resolved_id,
|
|
1121
|
+
entity_id = (
|
|
1122
|
+
await resolve_entity_id_after_write(self._client, resolved_id, "scene")
|
|
1123
|
+
if wait or effective_category
|
|
1124
|
+
else f"scene.{resolved_id}"
|
|
1157
1125
|
)
|
|
1158
1126
|
|
|
1159
1127
|
# Wait for scene to be queryable
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/tools/tools_config_scripts.py
RENAMED
|
@@ -38,7 +38,7 @@ from .blueprint_substitute import (
|
|
|
38
38
|
take_control_config,
|
|
39
39
|
validate_write_modes,
|
|
40
40
|
)
|
|
41
|
-
from .
|
|
41
|
+
from .entity_registration import resolve_entity_id_after_write
|
|
42
42
|
from .helpers import (
|
|
43
43
|
exception_to_structured_error,
|
|
44
44
|
log_tool_usage,
|
|
@@ -793,6 +793,7 @@ class ConfigScriptTools:
|
|
|
793
793
|
python_transform,
|
|
794
794
|
bp_warnings,
|
|
795
795
|
MandatoryBPS,
|
|
796
|
+
wait,
|
|
796
797
|
effective_category,
|
|
797
798
|
)
|
|
798
799
|
|
|
@@ -951,46 +952,44 @@ class ConfigScriptTools:
|
|
|
951
952
|
)
|
|
952
953
|
return transformed_config, resolved_id
|
|
953
954
|
|
|
954
|
-
async def
|
|
955
|
-
|
|
955
|
+
async def _finalize_script_write(
|
|
956
|
+
self,
|
|
957
|
+
result: dict[str, Any],
|
|
958
|
+
script_id: str,
|
|
959
|
+
resolved_key: str | None,
|
|
960
|
+
wait: bool,
|
|
961
|
+
category: str | None,
|
|
962
|
+
) -> None:
|
|
963
|
+
"""Resolve, wait, and apply a category for either script write mode.
|
|
956
964
|
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
``unique_id == storage_key``. Component lookup first, then a
|
|
960
|
-
registry-get fast path, then a registry-list scan; the constructed id
|
|
961
|
-
is the last resort (fresh creates resolve here before registration).
|
|
965
|
+
Match the upsert's storage key, which can differ from the caller's
|
|
966
|
+
entity ID after a registry rename. Keep the caller's ID as fallback.
|
|
962
967
|
"""
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
968
|
+
if not wait and not category:
|
|
969
|
+
return
|
|
970
|
+
storage_key = result.get("script_id") or resolved_key or script_id
|
|
971
|
+
entity_id = await resolve_entity_id_after_write(
|
|
972
|
+
self._client,
|
|
973
|
+
storage_key,
|
|
974
|
+
"script",
|
|
975
|
+
fallback_entity_id=f"script.{script_id.removeprefix('script.')}",
|
|
976
|
+
)
|
|
977
|
+
if wait:
|
|
978
|
+
try:
|
|
979
|
+
registered = await wait_for_entity_registered(self._client, entity_id)
|
|
980
|
+
if not registered:
|
|
981
|
+
result.setdefault("warnings", []).append(
|
|
982
|
+
f"Script saved but {entity_id} not yet queryable. "
|
|
983
|
+
"It may take a moment to become available."
|
|
984
|
+
)
|
|
985
|
+
except (HomeAssistantConnectionError, HomeAssistantAuthError) as e:
|
|
986
|
+
result.setdefault("warnings", []).append(
|
|
987
|
+
f"Script saved but verification failed: {e}"
|
|
988
|
+
)
|
|
989
|
+
if category:
|
|
990
|
+
await apply_entity_category(
|
|
991
|
+
self._client, entity_id, category, "script", result, "script"
|
|
981
992
|
)
|
|
982
|
-
entries = (listing.get("result") or []) if isinstance(listing, dict) else []
|
|
983
|
-
for entry in entries:
|
|
984
|
-
if (
|
|
985
|
-
isinstance(entry, dict)
|
|
986
|
-
and entry.get("platform") == "script"
|
|
987
|
-
and entry.get("unique_id") == storage_key
|
|
988
|
-
and str(entry.get("entity_id", "")).startswith("script.")
|
|
989
|
-
):
|
|
990
|
-
return str(entry["entity_id"])
|
|
991
|
-
except Exception as e:
|
|
992
|
-
logger.debug(f"Failed to resolve entity_id for script {storage_key}: {e}")
|
|
993
|
-
return constructed
|
|
994
993
|
|
|
995
994
|
async def _commit_script_transform(
|
|
996
995
|
self,
|
|
@@ -1000,13 +999,10 @@ class ConfigScriptTools:
|
|
|
1000
999
|
python_transform: str,
|
|
1001
1000
|
bp_warnings: BestPracticeCheckResult,
|
|
1002
1001
|
MandatoryBPS: bool,
|
|
1002
|
+
wait: bool,
|
|
1003
1003
|
effective_category: str | None = None,
|
|
1004
1004
|
) -> dict[str, Any]:
|
|
1005
|
-
"""Upsert
|
|
1006
|
-
|
|
1007
|
-
Extracted verbatim from ``ha_config_set_script``'s python_transform
|
|
1008
|
-
branch (the post-``_check_best_practices`` tail).
|
|
1009
|
-
"""
|
|
1005
|
+
"""Upsert, refresh the hash, finalize wait/category, and build the response."""
|
|
1010
1006
|
# Save transformed config. ``_fetch_and_verify_hash`` already
|
|
1011
1007
|
# resolved the storage key; pass it as the write target so the
|
|
1012
1008
|
# upsert skips the redundant re-resolve (issue #1813 Phase 0).
|
|
@@ -1020,18 +1016,9 @@ class ConfigScriptTools:
|
|
|
1020
1016
|
# Re-fetch to get authoritative hash (HA may normalize after save)
|
|
1021
1017
|
_, new_config_hash, _ = await self._get_script_config_internal(script_id)
|
|
1022
1018
|
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
if effective_category:
|
|
1027
|
-
await apply_entity_category(
|
|
1028
|
-
self._client,
|
|
1029
|
-
await self._resolve_script_entity_id(script_id),
|
|
1030
|
-
effective_category,
|
|
1031
|
-
"script",
|
|
1032
|
-
result,
|
|
1033
|
-
"script",
|
|
1034
|
-
)
|
|
1019
|
+
await self._finalize_script_write(
|
|
1020
|
+
result, script_id, resolved_id, wait, effective_category
|
|
1021
|
+
)
|
|
1035
1022
|
|
|
1036
1023
|
response: dict[str, Any] = {
|
|
1037
1024
|
"success": True,
|
|
@@ -1081,11 +1068,7 @@ class ConfigScriptTools:
|
|
|
1081
1068
|
MandatoryBPS: bool,
|
|
1082
1069
|
detached_blueprint: str | None = None,
|
|
1083
1070
|
) -> dict[str, Any]:
|
|
1084
|
-
"""Validate references, upsert, wait, and build the
|
|
1085
|
-
|
|
1086
|
-
Extracted verbatim from ``ha_config_set_script``'s full-config branch
|
|
1087
|
-
(the post-``_check_best_practices`` tail).
|
|
1088
|
-
"""
|
|
1071
|
+
"""Validate references, upsert, finalize wait/category, and build the response."""
|
|
1089
1072
|
# Cross-check literal service and entity references against
|
|
1090
1073
|
# the live registries. Soft warnings only — the write still
|
|
1091
1074
|
# happens, even when references don't resolve (#940).
|
|
@@ -1093,38 +1076,9 @@ class ConfigScriptTools:
|
|
|
1093
1076
|
|
|
1094
1077
|
result = await self._upsert_script(config_dict, script_id, resolved_key)
|
|
1095
1078
|
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
# cost. A registry-renamed script no longer lives at
|
|
1100
|
-
# script.<storage_key>; fresh creates fall back to the constructed id.
|
|
1101
|
-
if wait or effective_category:
|
|
1102
|
-
entity_id = await self._resolve_script_entity_id(script_id)
|
|
1103
|
-
else:
|
|
1104
|
-
entity_id = f"script.{script_id}"
|
|
1105
|
-
if wait:
|
|
1106
|
-
try:
|
|
1107
|
-
registered = await wait_for_entity_registered(self._client, entity_id)
|
|
1108
|
-
if not registered:
|
|
1109
|
-
result.setdefault("warnings", []).append(
|
|
1110
|
-
f"Script saved but {entity_id} not yet queryable. "
|
|
1111
|
-
"It may take a moment to become available."
|
|
1112
|
-
)
|
|
1113
|
-
except (HomeAssistantConnectionError, HomeAssistantAuthError) as e:
|
|
1114
|
-
result.setdefault("warnings", []).append(
|
|
1115
|
-
f"Script saved but verification failed: {e}"
|
|
1116
|
-
)
|
|
1117
|
-
|
|
1118
|
-
# Apply category to entity registry if provided
|
|
1119
|
-
if effective_category and entity_id:
|
|
1120
|
-
await apply_entity_category(
|
|
1121
|
-
self._client,
|
|
1122
|
-
entity_id,
|
|
1123
|
-
effective_category,
|
|
1124
|
-
"script",
|
|
1125
|
-
result,
|
|
1126
|
-
"script",
|
|
1127
|
-
)
|
|
1079
|
+
await self._finalize_script_write(
|
|
1080
|
+
result, script_id, resolved_key, wait, effective_category
|
|
1081
|
+
)
|
|
1128
1082
|
|
|
1129
1083
|
if bp_warnings:
|
|
1130
1084
|
result["best_practice_warnings"] = list(bp_warnings)
|
|
@@ -618,6 +618,7 @@ src/ha_mcp/tools/config_entry_reconfigure.py
|
|
|
618
618
|
src/ha_mcp/tools/config_entry_reload_watch.py
|
|
619
619
|
src/ha_mcp/tools/dashboard_edit_errors.py
|
|
620
620
|
src/ha_mcp/tools/device_control.py
|
|
621
|
+
src/ha_mcp/tools/entity_registration.py
|
|
621
622
|
src/ha_mcp/tools/error_log_parsing.py
|
|
622
623
|
src/ha_mcp/tools/hacs_registration.py
|
|
623
624
|
src/ha_mcp/tools/helpers.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/_install_hints.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/_warnings.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/app.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/approval.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/choice.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/config.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/form.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/apps/generative.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/auth.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2650 → ha_mcp_dev-8.4.3.dev2652}/src/ha_mcp/_vendor/fastmcp/cli/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|