ha-mcp-dev 8.6.0.dev2846__tar.gz → 8.6.0.dev2850__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.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/PKG-INFO +1 -1
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/pyproject.toml +1 -1
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/pyproject.toml.orig +1 -1
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/server.py +15 -476
- ha_mcp_dev-8.6.0.dev2850/src/ha_mcp/server_tool_text.py +484 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/client/admin_routes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/config_backup.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/config_overrides.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/config_registry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/config_settings.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/http_transport.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/policy/decision_pin.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/policy/decisions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/policy/events.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/policy/server_channels.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/server_lifespan.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/az.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/blueprint_sources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/device_enrichment.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/entity_registration.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/entity_update_fields.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/scene_discovery.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/transforms/component_search.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/transforms/write_tool_note.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/dashboard_patch.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/mcp_client_host.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/registry_update_lock.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.6.0.dev2846 → ha_mcp_dev-8.6.0.dev2850}/src/ha_mcp/visibility/resolver.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "8.6.0.
|
|
7
|
+
version = "8.6.0.dev2850"
|
|
8
8
|
description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13,<3.15"
|
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "8.6.0.
|
|
7
|
+
version = "8.6.0.dev2850"
|
|
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
|
|
@@ -22,6 +22,13 @@ from .config import _PACKAGE_VERSION, get_global_settings
|
|
|
22
22
|
from .errors import ErrorCode, create_error_response
|
|
23
23
|
from .http_transport import HttpTransportFastMCP as FastMCP
|
|
24
24
|
from .server_lifespan import server_lifespan
|
|
25
|
+
from .server_tool_text import (
|
|
26
|
+
LITE_DOCSTRING_DESTINATIONS,
|
|
27
|
+
LITE_DOCSTRINGS,
|
|
28
|
+
SEARCH_KEYWORDS,
|
|
29
|
+
SEARCH_TOOL_DESCRIPTION,
|
|
30
|
+
SKILL_USE_BEFORE_KEYWORDS,
|
|
31
|
+
)
|
|
25
32
|
from .tools.helpers import raise_tool_error
|
|
26
33
|
from .transforms import DEFAULT_PINNED_TOOLS
|
|
27
34
|
from .utils.skill_loader import (
|
|
@@ -548,466 +555,13 @@ class HomeAssistantSmartMCPServer:
|
|
|
548
555
|
# These are always visible in list_tools() regardless of search transform.
|
|
549
556
|
_PINNED_TOOLS: ClassVar[list[str]] = list(DEFAULT_PINNED_TOOLS)
|
|
550
557
|
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
"todo, camera, blueprints, system, and more.\n\n"
|
|
559
|
-
"WORKFLOW:\n"
|
|
560
|
-
"1. ha_search_tools(query='...') \u2014 find tools (this tool)\n"
|
|
561
|
-
"2. Execute: call the tool DIRECTLY by name (preferred), or use "
|
|
562
|
-
"a proxy for permission gating:\n"
|
|
563
|
-
" - ha_call_read_tool \u2014 readOnlyHint tools (safe, no side effects)\n"
|
|
564
|
-
" - ha_call_write_tool \u2014 destructiveHint tools that create/update\n"
|
|
565
|
-
" - ha_call_delete_tool \u2014 destructiveHint tools that remove/delete\n"
|
|
566
|
-
"Once you know a tool name, call it directly \u2014 no need to search "
|
|
567
|
-
"again.\n\n"
|
|
568
|
-
"If using proxies, call with TWO top-level params:\n"
|
|
569
|
-
' ha_call_read_tool(name="ha_search", arguments={"query": "..."})\n'
|
|
570
|
-
" Do NOT nest name/arguments inside the arguments param.\n"
|
|
571
|
-
" Call proxy tools SEQUENTIALLY, not in parallel.\n\n"
|
|
572
|
-
"ALWAYS search before assuming a capability is unavailable. "
|
|
573
|
-
"Most tools are discoverable only through this search."
|
|
574
|
-
)
|
|
575
|
-
|
|
576
|
-
# Extra keywords appended to tool descriptions for BM25 ranking.
|
|
577
|
-
# Applied unconditionally via SearchKeywordsTransform so they also
|
|
578
|
-
# improve retrieval for Claude's native deferred-tool search on
|
|
579
|
-
# claude.ai, which indexes tool names and descriptions with BM25
|
|
580
|
-
# (no semantic matching). Original tool docstrings stay unchanged;
|
|
581
|
-
# these keywords are appended by the transform at list-tools time.
|
|
582
|
-
_SEARCH_KEYWORDS: ClassVar[dict[str, str]] = {
|
|
583
|
-
# s02: "find entities or configs" → ha_search outranks more specific tools
|
|
584
|
-
"ha_search": (
|
|
585
|
-
"find entities configs lookup discover search lights sensors switches "
|
|
586
|
-
"covers climate fans media_player binary_sensor device_tracker "
|
|
587
|
-
"person weather automation script helper input_boolean input_number "
|
|
588
|
-
"automations scripts scenes helpers dashboards"
|
|
589
|
-
),
|
|
590
|
-
# s07: "get/read automation" → ha_config_get_automation should outrank set
|
|
591
|
-
"ha_config_get_automation": (
|
|
592
|
-
"read inspect fetch view existing automation config triggers "
|
|
593
|
-
"conditions actions get show detail"
|
|
594
|
-
),
|
|
595
|
-
# s09: "create helper" → ha_config_set_helper should outrank remove_helper
|
|
596
|
-
# Covers all 29 helper types (12 simple + 17 flow-based, unified in #967).
|
|
597
|
-
"ha_config_set_helper": (
|
|
598
|
-
"create update new add helper "
|
|
599
|
-
"input_boolean input_button input_number input_text input_datetime "
|
|
600
|
-
"input_select counter timer schedule zone person tag "
|
|
601
|
-
"template group utility_meter derivative min_max threshold "
|
|
602
|
-
"integration statistics trend random filter tod "
|
|
603
|
-
"generic_thermostat switch_as_x generic_hygrostat "
|
|
604
|
-
"history_stats mold_indicator"
|
|
605
|
-
),
|
|
606
|
-
# Boost tools that compete with ha_search for common queries
|
|
607
|
-
"ha_config_get_script": (
|
|
608
|
-
"read inspect fetch view existing script config sequence "
|
|
609
|
-
"actions get show detail"
|
|
610
|
-
),
|
|
611
|
-
"ha_config_list_helpers": (
|
|
612
|
-
"list all helpers input_boolean input_number input_text "
|
|
613
|
-
"counter timer input_datetime input_select"
|
|
614
|
-
),
|
|
615
|
-
"ha_get_entity": (
|
|
616
|
-
"get entity state attributes details single specific entity_id"
|
|
617
|
-
),
|
|
618
|
-
"ha_get_state": (
|
|
619
|
-
"get current state value single entity check status bulk multiple states"
|
|
620
|
-
),
|
|
621
|
-
"ha_config_set_automation": (
|
|
622
|
-
"create update modify edit automation triggers conditions actions "
|
|
623
|
-
"new automation write save take control blueprint detach "
|
|
624
|
-
"unlink standalone convert enable disable turn on off run trigger now"
|
|
625
|
-
),
|
|
626
|
-
"ha_config_set_script": (
|
|
627
|
-
"create update modify edit script sequence actions new script write "
|
|
628
|
-
"save take control blueprint detach unlink standalone convert "
|
|
629
|
-
"run start stop execute"
|
|
630
|
-
),
|
|
631
|
-
"ha_config_set_scene": (
|
|
632
|
-
"create update modify edit scene entities snapshot activate apply turn on"
|
|
633
|
-
),
|
|
634
|
-
"ha_manage_updates": (
|
|
635
|
-
"update updates install skip firmware core os repair repairs issue "
|
|
636
|
-
"ignore dismiss unignore"
|
|
637
|
-
),
|
|
638
|
-
"ha_set_integration": (
|
|
639
|
-
"integration config entry enable disable add options reconfigure "
|
|
640
|
-
"log level debug logging"
|
|
641
|
-
),
|
|
642
|
-
"ha_config_set_yaml": (
|
|
643
|
-
"edit yaml configuration.yaml packages template sensor "
|
|
644
|
-
"binary_sensor command_line rest mqtt knx platform yaml-only "
|
|
645
|
-
"config file modify add remove replace"
|
|
646
|
-
),
|
|
647
|
-
"ha_manage_app": (
|
|
648
|
-
"manage app apps addon add-on configure settings options port network boot "
|
|
649
|
-
"watchdog auto_update supervisor ingress proxy websocket api rest "
|
|
650
|
-
"esphome nodered node-red frigate mosquitto mqtt zigbee2mqtt zigbee "
|
|
651
|
-
"z-wave zwave appdaemon hacs studio code server file editor terminal "
|
|
652
|
-
"ssh samba grafana influxdb deconz motioneye compile validate upload "
|
|
653
|
-
"deploy firmware ota flash yaml device logs flows events stats"
|
|
654
|
-
),
|
|
655
|
-
# #2322: the Energy Dashboard's tariffs live in .storage/energy, not
|
|
656
|
-
# in the state machine, so an agent hunting for electricity prices
|
|
657
|
-
# searches entities, finds none, and invents input_number helpers.
|
|
658
|
-
# The docstring says "cost tariffs" but never "price", "peak" or
|
|
659
|
-
# "kWh" — the words agents actually query with — and the title reads
|
|
660
|
-
# write-only ("Manage ..."), so lead the boost with the read verbs.
|
|
661
|
-
"ha_manage_energy_prefs": (
|
|
662
|
-
"read get inspect energy dashboard preferences prefs "
|
|
663
|
-
"electricity price prices pricing tariff tariffs rate rates "
|
|
664
|
-
"cost costs kwh peak off-peak offpeak contract utility bill "
|
|
665
|
-
"grid solar battery gas water consumption "
|
|
666
|
-
"number_energy_price entity_energy_price stat_energy_from"
|
|
667
|
-
),
|
|
668
|
-
# Old tool names from before the #2329 consolidation, plus the verbs
|
|
669
|
-
# the merged tool gained. An agent that still knows ha_get_blueprint /
|
|
670
|
-
# ha_import_blueprint routes to the replacement instead of failing
|
|
671
|
-
# tool lookup.
|
|
672
|
-
"ha_manage_blueprints": (
|
|
673
|
-
"blueprint blueprints import delete remove unused substitute "
|
|
674
|
-
"take-control list ha_get_blueprint ha_import_blueprint"
|
|
675
|
-
),
|
|
676
|
-
# Old tool names from before #1134 consolidation. BM25 retrieval
|
|
677
|
-
# on agents that still know the previous catalog ("call
|
|
678
|
-
# ha_list_resources", "use ha_get_skill_home_assistant_best_practices")
|
|
679
|
-
# routes them to the replacement instead of failing tool lookup.
|
|
680
|
-
"ha_get_skill_guide": (
|
|
681
|
-
"best practices skill skills guide guides reference references "
|
|
682
|
-
"documentation docs help tutorial automation script scene helper "
|
|
683
|
-
"dashboard "
|
|
684
|
-
"ha_list_resources ha_read_resource list_resources read_resource "
|
|
685
|
-
"ha_get_skill_home_assistant_best_practices "
|
|
686
|
-
"ha_get_skill_home_assistant home_assistant_best_practices"
|
|
687
|
-
),
|
|
688
|
-
}
|
|
689
|
-
|
|
690
|
-
# Lite docstrings — beta opt-in (enable_lite_docstrings, #1062).
|
|
691
|
-
# Each entry replaces the full docstring on a heavy tool with a
|
|
692
|
-
# shorter variant that defers schema/example detail to
|
|
693
|
-
# ha_get_skill_guide. Every entry preserves
|
|
694
|
-
# a pointer to that skill so the LLM still has a path to the full
|
|
695
|
-
# guidance from inside the trimmed description. The trade-off
|
|
696
|
-
# (LLMs that skip the skill tool get less guidance) is surfaced in
|
|
697
|
-
# the dev-addon toggle, docs/beta.md, and a startup WARNING.
|
|
698
|
-
_LITE_DOCSTRINGS: ClassVar[dict[str, str]] = {
|
|
699
|
-
"ha_config_get_automation": (
|
|
700
|
-
"Get a Home Assistant automation configuration by "
|
|
701
|
-
"entity_id or unique_id. Returns the full config "
|
|
702
|
-
"(trigger, condition, action, mode) plus a stable "
|
|
703
|
-
"config_hash for use with python_transform on "
|
|
704
|
-
"ha_config_set_automation.\n\n"
|
|
705
|
-
"For schema and field-level details, see "
|
|
706
|
-
"ha_get_skill_guide."
|
|
707
|
-
),
|
|
708
|
-
"ha_config_set_automation": (
|
|
709
|
-
"Create or update a Home Assistant automation.\n\n"
|
|
710
|
-
"Supports three modes: full `config` replacement, surgical "
|
|
711
|
-
"`python_transform` on an existing automation (requires "
|
|
712
|
-
"`identifier` and `config_hash` from "
|
|
713
|
-
"ha_config_get_automation), or `take_control_of_blueprint` "
|
|
714
|
-
"to convert a blueprint-backed automation into an editable "
|
|
715
|
-
"standalone one (the UI's Take control action). Omit "
|
|
716
|
-
"`identifier` to create a new automation. Reusing an identifier targets "
|
|
717
|
-
"the same automation; changing its alias requires config_hash from a prior read. "
|
|
718
|
-
"`enabled` turns it on or off and `run_actions` runs it now, with a "
|
|
719
|
-
"write or alone with `identifier`.\n\n"
|
|
720
|
-
"For schema details, examples, and native-vs-template "
|
|
721
|
-
"guidance, see ha_get_skill_guide or your locally "
|
|
722
|
-
"installed skills."
|
|
723
|
-
),
|
|
724
|
-
"ha_config_get_script": (
|
|
725
|
-
"Get a Home Assistant script configuration by "
|
|
726
|
-
"script_id or entity_id. Returns the full config (sequence, "
|
|
727
|
-
"mode, fields) plus a stable config_hash for use with "
|
|
728
|
-
"python_transform on ha_config_set_script.\n\n"
|
|
729
|
-
"For schema details, see "
|
|
730
|
-
"ha_get_skill_guide."
|
|
731
|
-
),
|
|
732
|
-
"ha_config_set_script": (
|
|
733
|
-
"Create or update a Home Assistant script.\n\n"
|
|
734
|
-
"Supports three modes: full `config` replacement, surgical "
|
|
735
|
-
"`python_transform` on an existing script (requires "
|
|
736
|
-
"`config_hash` from ha_config_get_script), or "
|
|
737
|
-
"`take_control_of_blueprint` to convert a blueprint-backed "
|
|
738
|
-
"script into an editable standalone one. `script_id` names "
|
|
739
|
-
"the script in every mode. `run` ('start' / 'stop'), used alone "
|
|
740
|
-
"with `script_id`, starts or stops the script.\n\n"
|
|
741
|
-
"For schema details and examples, see "
|
|
742
|
-
"ha_get_skill_guide or your locally installed skills."
|
|
743
|
-
),
|
|
744
|
-
"ha_config_get_scene": (
|
|
745
|
-
"Get a Home Assistant scene configuration by scene_id or entity_id, "
|
|
746
|
-
"or omit scene_id to list/search scenes. Use query for names/IDs "
|
|
747
|
-
"and search_in_config=True for full stored attribute values. "
|
|
748
|
-
"Pass a returned scene_id to get the full config plus a "
|
|
749
|
-
"stable config_hash for use with python_transform on "
|
|
750
|
-
"ha_config_set_scene. Integration-managed scenes have no editable "
|
|
751
|
-
"storage config; partial content searches are not exhaustive.\n\n"
|
|
752
|
-
"For schema details, see "
|
|
753
|
-
"ha_get_skill_guide."
|
|
754
|
-
),
|
|
755
|
-
"ha_config_set_scene": (
|
|
756
|
-
"Create or update a Home Assistant scene.\n\n"
|
|
757
|
-
"Supports two modes: full `config` replacement, or surgical "
|
|
758
|
-
"`python_transform` on an existing scene (requires "
|
|
759
|
-
"`config_hash`). `scene_id` names the scene in both modes. "
|
|
760
|
-
"`activate` activates the scene, with a write or alone.\n\n"
|
|
761
|
-
"For schema details and examples, see "
|
|
762
|
-
"ha_get_skill_guide or your locally installed skills."
|
|
763
|
-
),
|
|
764
|
-
"ha_config_list_helpers": (
|
|
765
|
-
"List Home Assistant helpers of a given type, one page per "
|
|
766
|
-
"call (`limit`/`offset`; `total_count` and `has_more` "
|
|
767
|
-
"describe the full set). The 12 storage-backed types "
|
|
768
|
-
"(input_button, input_boolean, input_select, input_number, "
|
|
769
|
-
"input_text, input_datetime, counter, timer, schedule, "
|
|
770
|
-
"zone, person, tag) are listed on every install. Flow-based "
|
|
771
|
-
"types (template, group, utility_meter, derivative, and the "
|
|
772
|
-
"rest) and `helper_type='all'` are served only through the "
|
|
773
|
-
"ha_mcp_tools custom component.\n\n"
|
|
774
|
-
"For per-type schemas and decision guidance, see "
|
|
775
|
-
"ha_get_skill_guide."
|
|
776
|
-
),
|
|
777
|
-
"ha_config_set_helper": (
|
|
778
|
-
"Create or update a Home Assistant helper. Supports all "
|
|
779
|
-
"supported helper types: the simple types (input_*, "
|
|
780
|
-
"counter, timer, schedule, zone, person, tag) and the "
|
|
781
|
-
"flow-based types (template, group, utility_meter, "
|
|
782
|
-
"derivative, statistics, trend, threshold, filter, "
|
|
783
|
-
"switch_as_x, and others).\n\n"
|
|
784
|
-
"Field set is delivered as `data_schema` on the first "
|
|
785
|
-
"validation error — submit once and self-correct. For "
|
|
786
|
-
"decision matrix and worked examples (which helper type "
|
|
787
|
-
"for which use case), see ha_get_skill_guide or your "
|
|
788
|
-
"locally installed skills."
|
|
789
|
-
),
|
|
790
|
-
"ha_config_get_dashboard": (
|
|
791
|
-
"Get Home Assistant dashboard info (list mode, search "
|
|
792
|
-
"mode, or full config).\n\n"
|
|
793
|
-
"Three modes: (1) list — `list_only=True` returns all "
|
|
794
|
-
"storage-mode dashboards with metadata. (2) search — pass "
|
|
795
|
-
"any of `entity_id`, `card_type`, `heading` to find cards "
|
|
796
|
-
"(including nested ones, with a `python_path`) inside a "
|
|
797
|
-
"specific dashboard; the "
|
|
798
|
-
"result includes a `config_hash` you can pair with "
|
|
799
|
-
"ha_config_set_dashboard(python_transform=...) to edit "
|
|
800
|
-
"matched cards surgically. (3) get — no search params "
|
|
801
|
-
"returns the full Lovelace config plus a stable "
|
|
802
|
-
"`config_hash`. Use `url_path='default'` for the main "
|
|
803
|
-
"dashboard. For known JSON Pointer paths, use "
|
|
804
|
-
"ha_config_set_dashboard(patch=..., config_hash=...).\n\n"
|
|
805
|
-
"For card-type taxonomy and search workflow examples, see "
|
|
806
|
-
"ha_get_skill_guide."
|
|
807
|
-
),
|
|
808
|
-
"ha_config_set_dashboard": (
|
|
809
|
-
"Create or update a Home Assistant dashboard.\n\n"
|
|
810
|
-
"Three modes: full `config` replacement for new dashboards or "
|
|
811
|
-
"restructures; `patch` for known JSON Pointer paths with literal "
|
|
812
|
-
"values (add/remove/replace/test, up to 100 operations; use `-` "
|
|
813
|
-
"to append to arrays); `python_transform` for loops and pattern-based "
|
|
814
|
-
"edits. Both edit modes require `config_hash` from "
|
|
815
|
-
"ha_config_get_dashboard. Choose one mode for content changes; "
|
|
816
|
-
"omit all three for metadata-only calls. With patch, change "
|
|
817
|
-
"sidebar metadata in a separate call. Use `url_path` of 'default' "
|
|
818
|
-
"or 'lovelace' for the built-in dashboard.\n\n"
|
|
819
|
-
"For card types, layout patterns, and python_transform "
|
|
820
|
-
"security rules, see "
|
|
821
|
-
"ha_get_skill_guide or your locally installed skills."
|
|
822
|
-
),
|
|
823
|
-
"ha_call_service": (
|
|
824
|
-
"Call any Home Assistant service or one-shot WebSocket command: "
|
|
825
|
-
"the catch-all escape hatch. Prefer a dedicated tool when one "
|
|
826
|
-
"covers the job (automations, scripts, scenes, apps, updates and "
|
|
827
|
-
"repairs, integration log levels). Calls `<domain>.<service>` "
|
|
828
|
-
"(e.g., light.turn_on, climate.set_temperature). Use "
|
|
829
|
-
"ha_search to find entity IDs and ha_get_state "
|
|
830
|
-
"to read current values before changing them.\n\n"
|
|
831
|
-
"For service-parameter details and per-domain guidance, "
|
|
832
|
-
"see ha_get_skill_guide."
|
|
833
|
-
),
|
|
834
|
-
"ha_config_set_yaml": (
|
|
835
|
-
"Update raw YAML in configuration.yaml, packages/*.yaml or "
|
|
836
|
-
"themes/*.yaml via add / replace / remove on a single top-level key "
|
|
837
|
-
"(LAST RESORT). By default the first call returns a diff "
|
|
838
|
-
"preview plus confirm_token; repeat with confirm_token to "
|
|
839
|
-
"apply.\n\n"
|
|
840
|
-
"Dedicated tools (ha_config_set_automation, "
|
|
841
|
-
"ha_config_set_script, ha_config_set_scene, "
|
|
842
|
-
"ha_config_set_helper) cover almost every use case and "
|
|
843
|
-
"should be preferred. Use this only for YAML-only "
|
|
844
|
-
"integrations (command_line, rest, shell_command, notify), "
|
|
845
|
-
"YAML-heavy integrations like knx (in packages/*.yaml), "
|
|
846
|
-
"registering YAML-mode dashboards via "
|
|
847
|
-
"`lovelace.dashboards.<url_path>`, or editing theme files in "
|
|
848
|
-
"themes/*.yaml (reloaded automatically). Most edits require a "
|
|
849
|
-
"full HA restart; template, mqtt, and group support "
|
|
850
|
-
"reload.\n\n"
|
|
851
|
-
"For routing guidance and the full allowlist, see "
|
|
852
|
-
"ha_get_skill_guide or your locally installed skills."
|
|
853
|
-
),
|
|
854
|
-
"ha_search": (
|
|
855
|
-
"Search Home Assistant for entities (by name, domain, or area) AND "
|
|
856
|
-
"inside automation/script/scene/helper/dashboard configs, in one "
|
|
857
|
-
"call. Returns tagged buckets — `entities` plus per-config-type "
|
|
858
|
-
"lists — paginated per-surface and combined "
|
|
859
|
-
"(`has_more`/`next_offset`).\n\n"
|
|
860
|
-
"Config-body search is skipped when domain/area/state filters signal "
|
|
861
|
-
"entity-only intent; a warning names the skip — pass `search_types` "
|
|
862
|
-
"to force it.\n\n"
|
|
863
|
-
"`partial: True` means results are NOT exhaustive: a surface failed "
|
|
864
|
-
"or the config branch lost data. Empty buckets with `partial: True` "
|
|
865
|
-
'mean "search failed", not "no results" — see `partial_reason` '
|
|
866
|
-
"(also mirrored into `warnings`). Do not treat a partial response as "
|
|
867
|
-
"complete.\n\n"
|
|
868
|
-
"For what to do with what you find — native-first patterns, "
|
|
869
|
-
"entity_id over device_id, impact analysis before renaming — see "
|
|
870
|
-
"ha_get_skill_guide."
|
|
871
|
-
),
|
|
872
|
-
# ha_manage_backup: the full description is 4571 dedented chars at
|
|
873
|
-
# BACKUP_HINT=normal (4672 strong / 4598 weak) and the lite value is
|
|
874
|
-
# a little over a quarter of that. No exact pair is quoted here on
|
|
875
|
-
# purpose — three successive edits left a stale figure in this
|
|
876
|
-
# comment, so the ratio is pinned by
|
|
877
|
-
# test_backup_lite_description_stays_substantially_smaller instead,
|
|
878
|
-
# which measures both sides at test time.
|
|
879
|
-
#
|
|
880
|
-
# It was the largest full description in the GATEWAY catalog this was
|
|
881
|
-
# measured against, not in the repo: ha_get_system_health (5811) is
|
|
882
|
-
# larger and unmapped.
|
|
883
|
-
# The reduction is smaller than pure compression would give because
|
|
884
|
-
# the safety content below is kept inline. The routing matrix STAYS —
|
|
885
|
-
# the `action` parameter's own Field description says "Valid (scope,
|
|
886
|
-
# action) combinations are listed in the tool description", so
|
|
887
|
-
# trimming it away would leave that pointer aimed at nothing.
|
|
888
|
-
#
|
|
889
|
-
# The deferral target now exists: homeassistant-ai/skills#76 landed
|
|
890
|
-
# references/backups.md, and the submodule pin in this commit
|
|
891
|
-
# includes it, so test_every_lite_destination_resolves enforces it
|
|
892
|
-
# rather than the entry sitting on "self-contained". What defers is
|
|
893
|
-
# the recovery-layer judgment — which of HA's two paths fits which
|
|
894
|
-
# failure, what an archive actually contains, encryption keys, and
|
|
895
|
-
# what HA does and does not protect on delete. The eleven worked
|
|
896
|
-
# examples stay dropped: they were call syntax, which the input
|
|
897
|
-
# schema already carries.
|
|
898
|
-
#
|
|
899
|
-
# destructiveHint is set on this tool, so the lite text keeps every
|
|
900
|
-
# irreversibility marker inline rather than deferring it: the
|
|
901
|
-
# restart, the confirm, the human-only enable_snapshot_delete, and
|
|
902
|
-
# each individual delete guard. It also keeps the two diagnostics
|
|
903
|
-
# that have no fallback anywhere else — the enable_auto_backup
|
|
904
|
-
# empty-list ambiguity, and the {backup_hint_text} timing sentence
|
|
905
|
-
# (resolved per-instance; see _lite_docstring_tokens).
|
|
906
|
-
"ha_manage_backup": (
|
|
907
|
-
"Manage Home Assistant backups: full HA snapshots "
|
|
908
|
-
"(`scope='snapshot'`) and per-entity auto-backups of agent edits "
|
|
909
|
-
"(`scope='edits'`). Pick the scope first — the wrong one routes "
|
|
910
|
-
"through the wrong code path.\n\n"
|
|
911
|
-
"`scope='snapshot'` actions: `create` (slow on a large "
|
|
912
|
-
"instance — progress heartbeats are sent while waiting, so a "
|
|
913
|
-
"long wait is not a hang; retrying starts a SECOND backup), "
|
|
914
|
-
"`list`, `restore` (**restarts HA**), `delete` (needs "
|
|
915
|
-
"`confirm=True`; disabled until a human sets "
|
|
916
|
-
"`enable_snapshot_delete` — an agent cannot enable it. Even then "
|
|
917
|
-
"a delete is refused for scheduled/automatic backups, for "
|
|
918
|
-
"anything younger than `snapshot_delete_min_age_days` (default "
|
|
919
|
-
"7; 0 disables the floor), and for the single newest snapshot "
|
|
920
|
-
"remaining).\n\n"
|
|
921
|
-
"`scope='edits'` actions: `create` (needs `domain` + "
|
|
922
|
-
"`entity_id`), `list`, `view`, `diff`, `restore` (takes a fresh "
|
|
923
|
-
"safety snapshot first; no HA restart), `delete`. Automatic "
|
|
924
|
-
"capture on write is gated by `enable_auto_backup`, so an empty "
|
|
925
|
-
'`list` means "nothing saved" OR "the toggle is off" — check it '
|
|
926
|
-
"before concluding there is nothing to restore. Either way "
|
|
927
|
-
"`(edits, create)` still works: it bypasses the toggle because "
|
|
928
|
-
"the request is explicit.\n\n"
|
|
929
|
-
"Use `edits` to undo a recent agent edit to an "
|
|
930
|
-
"automation/script/scene/dashboard/helper; use `snapshot` for "
|
|
931
|
-
"system-wide recovery and before irreversible operations. "
|
|
932
|
-
"{backup_hint_text}\n\n"
|
|
933
|
-
"For which recovery path fits which failure, what an archive "
|
|
934
|
-
"actually contains, and the encryption key a restore needs, see "
|
|
935
|
-
"ha_get_skill_guide (`references/backups.md`)."
|
|
936
|
-
),
|
|
937
|
-
# ha_report_issue: the lite value is about two thirds of the full
|
|
938
|
-
# docstring. As for ha_manage_backup, no exact pair is quoted.
|
|
939
|
-
#
|
|
940
|
-
# Unlike every other entry here, the deferral target is the tool's
|
|
941
|
-
# OWN RESPONSE, not the skill guide: `instructions` (see
|
|
942
|
-
# tools_bug_report.py) independently re-derives the duplicate check,
|
|
943
|
-
# the report type choice, the missing-tool pre-check, and the mandatory
|
|
944
|
-
# anonymisation step. Issue reporting is ha-mcp product meta — it
|
|
945
|
-
# cannot go in the skill pack, whose CONTRIBUTING forbids coupling
|
|
946
|
-
# skill content to specific MCP tool names. The lite text says so
|
|
947
|
-
# outright so a compliant agent doesn't spend a call finding out.
|
|
948
|
-
"ha_report_issue": (
|
|
949
|
-
"Get diagnostic information plus a finished GitHub issue. Covers "
|
|
950
|
-
"two kinds of report: a runtime bug (ha-mcp errored or behaved "
|
|
951
|
-
"unexpectedly) and agent-behaviour feedback (the AI used the wrong "
|
|
952
|
-
"tool or worked inefficiently). Pass the report text in the call; "
|
|
953
|
-
"the server builds the issue title, body and a pre-filled link.\n\n"
|
|
954
|
-
"The response carries the full workflow in its `instructions` "
|
|
955
|
-
"field (duplicate check, the mandatory anonymisation step, and "
|
|
956
|
-
"how to file the issue), plus "
|
|
957
|
-
'`missing_tool_hint` for the "a tool I expected is missing" '
|
|
958
|
-
"case, which is usually a stale client tool list rather than a "
|
|
959
|
-
"bug. Read `instructions` before presenting anything to the "
|
|
960
|
-
"user; ha_get_skill_guide does not cover issue reporting."
|
|
961
|
-
),
|
|
962
|
-
}
|
|
963
|
-
|
|
964
|
-
# Where each _LITE_DOCSTRINGS entry's "see ..." pointer actually lands.
|
|
965
|
-
#
|
|
966
|
-
# The pointer is the whole bargain of lite mode: the trimmed text is only
|
|
967
|
-
# acceptable because the detail is reachable. Enforcing that every entry
|
|
968
|
-
# merely CONTAINS the string "ha_get_skill_guide" (the original
|
|
969
|
-
# invariant) checks the pointer and never the destination — which is how
|
|
970
|
-
# an entry deferring to guide content that does not exist could pass
|
|
971
|
-
# tests (#2153 review). This map names the destination so
|
|
972
|
-
# tests/src/unit/test_lite_docstrings.py can resolve it against the
|
|
973
|
-
# vendored skill pack.
|
|
974
|
-
#
|
|
975
|
-
# Three legal value forms, each with a matching check in the tests:
|
|
976
|
-
#
|
|
977
|
-
# "references/<file>.md" / "SKILL.md"
|
|
978
|
-
# A path inside the home-assistant-best-practices skill. Must
|
|
979
|
-
# resolve against the VENDORED pack, and the lite text must carry
|
|
980
|
-
# a ha_get_skill_guide pointer to reach it.
|
|
981
|
-
# "tool-response:<field>"
|
|
982
|
-
# The guidance ships in the tool's own response instead. The field
|
|
983
|
-
# must actually be returned, and the lite text must name it.
|
|
984
|
-
# "self-contained"
|
|
985
|
-
# The entry defers nothing. The lite text must carry NO
|
|
986
|
-
# ha_get_skill_guide pointer and name no reference file, so an
|
|
987
|
-
# entry cannot quietly re-acquire a pointer to content that isn't
|
|
988
|
-
# vendored — which is what "self-contained" exists to prevent.
|
|
989
|
-
_LITE_DOCSTRING_DESTINATIONS: ClassVar[dict[str, str]] = {
|
|
990
|
-
"ha_config_get_automation": "references/triggers-and-conditions.md",
|
|
991
|
-
"ha_config_set_automation": "references/triggers-and-conditions.md",
|
|
992
|
-
"ha_config_get_script": "references/automation-actions.md",
|
|
993
|
-
"ha_config_set_script": "references/automation-actions.md",
|
|
994
|
-
"ha_config_get_scene": "references/scenes.md",
|
|
995
|
-
"ha_config_set_scene": "references/scenes.md",
|
|
996
|
-
"ha_config_list_helpers": "references/helper-selection.md",
|
|
997
|
-
"ha_config_set_helper": "references/helper-selection.md",
|
|
998
|
-
"ha_config_get_dashboard": "references/dashboard-cards.md",
|
|
999
|
-
"ha_config_set_dashboard": "references/dashboard-guide.md",
|
|
1000
|
-
"ha_call_service": "references/domain-docs.md",
|
|
1001
|
-
"ha_config_set_yaml": "references/yaml-only-integrations.md",
|
|
1002
|
-
# The skill pack has no search reference, so this lands on the
|
|
1003
|
-
# decision workflow. The lite text was reworded to promise what
|
|
1004
|
-
# SKILL.md actually holds (what to do with the results) instead of
|
|
1005
|
-
# "parameters, schema, and examples", which it never had — the
|
|
1006
|
-
# parameters ship in the input schema regardless.
|
|
1007
|
-
"ha_search": "SKILL.md",
|
|
1008
|
-
"ha_manage_backup": "references/backups.md",
|
|
1009
|
-
"ha_report_issue": "tool-response:instructions",
|
|
1010
|
-
}
|
|
558
|
+
_SEARCH_TOOL_DESCRIPTION = SEARCH_TOOL_DESCRIPTION
|
|
559
|
+
|
|
560
|
+
_SEARCH_KEYWORDS: ClassVar[dict[str, str]] = SEARCH_KEYWORDS
|
|
561
|
+
|
|
562
|
+
_LITE_DOCSTRINGS: ClassVar[dict[str, str]] = LITE_DOCSTRINGS
|
|
563
|
+
|
|
564
|
+
_LITE_DOCSTRING_DESTINATIONS: ClassVar[dict[str, str]] = LITE_DOCSTRING_DESTINATIONS
|
|
1011
565
|
|
|
1012
566
|
# Description overrides that REPLACE the original description for BM25.
|
|
1013
567
|
# Used to narrow overly broad tools so they stop matching generic queries
|
|
@@ -1469,22 +1023,7 @@ class HomeAssistantSmartMCPServer:
|
|
|
1469
1023
|
VisibilityOutboundEnforcement(get_client=lambda: self.client)
|
|
1470
1024
|
)
|
|
1471
1025
|
|
|
1472
|
-
|
|
1473
|
-
# (Claude Code, others) rank candidate tools by token-overlap between
|
|
1474
|
-
# the user's natural-language query and each tool's `description`
|
|
1475
|
-
# field; symptom-framed SKILL.md descriptions don't overlap with
|
|
1476
|
-
# task-phrased queries like "create automation" or "writing trigger".
|
|
1477
|
-
# This block lists the workflow positions where consulting the
|
|
1478
|
-
# bundled skill matters, so retrieval surfaces ha_get_skill_guide
|
|
1479
|
-
# when an agent is about to write config.
|
|
1480
|
-
_SKILL_USE_BEFORE_KEYWORDS: ClassVar[str] = (
|
|
1481
|
-
"Use BEFORE: creating or editing automations, scripts, scenes, "
|
|
1482
|
-
"helpers, or dashboards; writing triggers, conditions, actions, "
|
|
1483
|
-
"wait_template, or service calls; renaming entities or migrating "
|
|
1484
|
-
"device_id to entity_id; calling ha_config_set_automation, "
|
|
1485
|
-
"ha_config_set_script, ha_config_set_helper, ha_config_set_dashboard, "
|
|
1486
|
-
"or ha_set_entity."
|
|
1487
|
-
)
|
|
1026
|
+
_SKILL_USE_BEFORE_KEYWORDS: ClassVar[str] = SKILL_USE_BEFORE_KEYWORDS
|
|
1488
1027
|
|
|
1489
1028
|
def _register_skills(self) -> None:
|
|
1490
1029
|
"""Register bundled skills as MCP resources and the skill tool.
|