ha-mcp-dev 8.4.3.dev2643__tar.gz → 8.4.3.dev2647__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ha_mcp_dev-8.4.3.dev2643/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.4.3.dev2647}/PKG-INFO +25 -1
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/README.md +24 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/pyproject.toml +1 -1
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/dashboard_screenshot/theme_guard.py +6 -4
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/http_transport.py +59 -3
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/read_only.py +47 -9
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_search.py +5 -5
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/transforms/categorized_search.py +2 -2
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647/src/ha_mcp_dev.egg-info}/PKG-INFO +25 -1
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/MANIFEST.in +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/setup.cfg +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/evals/area-target-over-entity-list/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/evals/arrive-home-automation/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/evals/assist-shortcut-card/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/evals/avg-temperature/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/evals/backup-deletion-confirmation/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/evals/blueprint-authoring/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/evals/button-event-entity/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/evals/device-id-trigger-migration/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/evals/helper-flow-fields-not-platform-yaml/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/evals/media-player-song/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/evals/motion-light-automation-mode/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/evals/rename-entity-impact-analysis/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/evals/template-attributes-yaml-exception/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/evals/timer-finished-automation/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/evals/vacuum-last-clean/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/scripts/check_eval_cases.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/blueprint_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/utils/dashboard_patch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/tests/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/tests/test_constants.py +0 -0
- {ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/tests/test_env_manager.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ha-mcp-dev
|
|
3
|
-
Version: 8.4.3.
|
|
3
|
+
Version: 8.4.3.dev2647
|
|
4
4
|
Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
|
|
5
5
|
Author-email: Julien <github@qc-h.net>
|
|
6
6
|
License: MIT
|
|
@@ -408,6 +408,30 @@ For the HA app, the same option is documented in [`homeassistant-addon/DOCS.md`]
|
|
|
408
408
|
|
|
409
409
|
---
|
|
410
410
|
|
|
411
|
+
### Read-only HTTP connections
|
|
412
|
+
|
|
413
|
+
Append `/readonly` to the server's HTTP MCP endpoint to restrict that connection
|
|
414
|
+
to the existing Read Only Mode while other clients keep normal access:
|
|
415
|
+
|
|
416
|
+
```text
|
|
417
|
+
Normal: https://example.com/private_your_secret
|
|
418
|
+
Read-only: https://example.com/private_your_secret/readonly
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
OAuth and OIDC connections use the same login/provider: for example,
|
|
422
|
+
`https://example.com/mcp/readonly`. No additional secret or server is required.
|
|
423
|
+
Read-only connections hide write tools and block write calls, including calls
|
|
424
|
+
through cached tools or search proxies. The global Read Only Mode setting still
|
|
425
|
+
restricts both endpoints when enabled. Reconnect the client after changing its URL
|
|
426
|
+
so it refreshes its tool list.
|
|
427
|
+
|
|
428
|
+
This is a connection mode for automated agents, not a separate permission on the
|
|
429
|
+
credential: the same credentials still work at the normal endpoint. Home Assistant
|
|
430
|
+
webhook URLs also accept the suffix:
|
|
431
|
+
`https://your-ha.example/api/webhook/<webhook-id>/readonly`. This requires the
|
|
432
|
+
updated embedded integration or Webhook Proxy dev app (add-on), together with
|
|
433
|
+
the updated MCP server.
|
|
434
|
+
|
|
411
435
|
## 🧪 Dev Channel
|
|
412
436
|
|
|
413
437
|
Want early access to new features and fixes? Dev releases (`.devN`) are published on every push to master.
|
|
@@ -376,6 +376,30 @@ For the HA app, the same option is documented in [`homeassistant-addon/DOCS.md`]
|
|
|
376
376
|
|
|
377
377
|
---
|
|
378
378
|
|
|
379
|
+
### Read-only HTTP connections
|
|
380
|
+
|
|
381
|
+
Append `/readonly` to the server's HTTP MCP endpoint to restrict that connection
|
|
382
|
+
to the existing Read Only Mode while other clients keep normal access:
|
|
383
|
+
|
|
384
|
+
```text
|
|
385
|
+
Normal: https://example.com/private_your_secret
|
|
386
|
+
Read-only: https://example.com/private_your_secret/readonly
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
OAuth and OIDC connections use the same login/provider: for example,
|
|
390
|
+
`https://example.com/mcp/readonly`. No additional secret or server is required.
|
|
391
|
+
Read-only connections hide write tools and block write calls, including calls
|
|
392
|
+
through cached tools or search proxies. The global Read Only Mode setting still
|
|
393
|
+
restricts both endpoints when enabled. Reconnect the client after changing its URL
|
|
394
|
+
so it refreshes its tool list.
|
|
395
|
+
|
|
396
|
+
This is a connection mode for automated agents, not a separate permission on the
|
|
397
|
+
credential: the same credentials still work at the normal endpoint. Home Assistant
|
|
398
|
+
webhook URLs also accept the suffix:
|
|
399
|
+
`https://your-ha.example/api/webhook/<webhook-id>/readonly`. This requires the
|
|
400
|
+
updated embedded integration or Webhook Proxy dev app (add-on), together with
|
|
401
|
+
the updated MCP server.
|
|
402
|
+
|
|
379
403
|
## 🧪 Dev Channel
|
|
380
404
|
|
|
381
405
|
Want early access to new features and fixes? Dev releases (`.devN`) are published on every push to master.
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "8.4.3.
|
|
7
|
+
version = "8.4.3.dev2647"
|
|
8
8
|
description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
# Upper bound widened to <3.15 so the package installs on Home Assistant's
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/dashboard_screenshot/theme_guard.py
RENAMED
|
@@ -80,9 +80,9 @@ def _read_only_mode() -> bool:
|
|
|
80
80
|
must know about it.
|
|
81
81
|
"""
|
|
82
82
|
try:
|
|
83
|
-
from ..
|
|
83
|
+
from ..read_only import is_read_only
|
|
84
84
|
|
|
85
|
-
return
|
|
85
|
+
return is_read_only()
|
|
86
86
|
except Exception: # pragma: no cover - settings must never break a read
|
|
87
87
|
return False
|
|
88
88
|
|
|
@@ -423,12 +423,14 @@ class ThemeGuard:
|
|
|
423
423
|
"> General in the Home Assistant UI."
|
|
424
424
|
)
|
|
425
425
|
elif _read_only_mode():
|
|
426
|
+
from ..read_only import read_only_remedy_hint
|
|
427
|
+
|
|
426
428
|
remedy = (
|
|
427
429
|
"Server Read Only Mode is on, so ha-mcp will not restore "
|
|
428
430
|
"it: captures keep running there, but every theme write is "
|
|
429
431
|
"blocked at call time. Restore it from that account's own "
|
|
430
|
-
"session, Profile > General in the Home Assistant UI
|
|
431
|
-
"
|
|
432
|
+
"session, Profile > General in the Home Assistant UI. "
|
|
433
|
+
f"{read_only_remedy_hint()}"
|
|
432
434
|
)
|
|
433
435
|
else:
|
|
434
436
|
remedy = (
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Shared HTTP endpoint modes and transport options for HA-MCP launchers."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
@@ -22,6 +22,28 @@ from .config import get_global_settings
|
|
|
22
22
|
logger = logging.getLogger(__name__)
|
|
23
23
|
|
|
24
24
|
|
|
25
|
+
def _get_route_path(scope: Scope) -> str:
|
|
26
|
+
"""Local copy of ``starlette._utils.get_route_path`` (private API).
|
|
27
|
+
|
|
28
|
+
Strips a mount's ``root_path`` prefix from ``scope["path"]``, the same
|
|
29
|
+
prefix Starlette's own routers use to resolve a sub-app's route. Vendored
|
|
30
|
+
because the source module is private and a minor Starlette bump could
|
|
31
|
+
move or change it without notice; keep this in sync with upstream if
|
|
32
|
+
scope's routing fields ever change.
|
|
33
|
+
"""
|
|
34
|
+
path: str = scope["path"]
|
|
35
|
+
root_path = scope.get("root_path", "")
|
|
36
|
+
if not root_path:
|
|
37
|
+
return path
|
|
38
|
+
if not path.startswith(root_path):
|
|
39
|
+
return path
|
|
40
|
+
if path == root_path:
|
|
41
|
+
return ""
|
|
42
|
+
if path[len(root_path)] == "/":
|
|
43
|
+
return path[len(root_path) :]
|
|
44
|
+
return path
|
|
45
|
+
|
|
46
|
+
|
|
25
47
|
@dataclass
|
|
26
48
|
class _DiagnosticLogLevel:
|
|
27
49
|
"""Shared ownership while HTTP app lifespans overlap during a restart."""
|
|
@@ -67,7 +89,7 @@ class HttpTransportFastMCP(FastMCP):
|
|
|
67
89
|
"""
|
|
68
90
|
|
|
69
91
|
def http_app(self, *args: Any, **kwargs: Any) -> StarletteWithLifespan:
|
|
70
|
-
"""Build the
|
|
92
|
+
"""Build the app with a readonly alias and optional transport experiments."""
|
|
71
93
|
settings = get_global_settings()
|
|
72
94
|
if settings.http_json_response:
|
|
73
95
|
# FastMCP accepts json_response as its third positional argument.
|
|
@@ -89,7 +111,41 @@ class HttpTransportFastMCP(FastMCP):
|
|
|
89
111
|
args = (args[0], middleware, *args[2:])
|
|
90
112
|
else:
|
|
91
113
|
kwargs["middleware"] = middleware
|
|
92
|
-
|
|
114
|
+
app = super().http_app(*args, **kwargs)
|
|
115
|
+
if app.state.transport_type == "streamable-http":
|
|
116
|
+
app.add_middleware(ReadOnlyEndpoint, path=app.state.path)
|
|
117
|
+
return app
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
class ReadOnlyEndpoint:
|
|
121
|
+
"""Route the exact /readonly alias through the same authenticated MCP app.
|
|
122
|
+
|
|
123
|
+
This selects read-only behavior for a configured client connection; the
|
|
124
|
+
credential still works at the normal endpoint. Settings and other HTTP
|
|
125
|
+
routes are not aliased.
|
|
126
|
+
"""
|
|
127
|
+
|
|
128
|
+
def __init__(self, app: ASGIApp, path: str) -> None:
|
|
129
|
+
self.app = app
|
|
130
|
+
self.path = path
|
|
131
|
+
self.readonly_path = f"{path.rstrip('/')}/readonly"
|
|
132
|
+
|
|
133
|
+
async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
|
|
134
|
+
if (
|
|
135
|
+
scope["type"] != "http"
|
|
136
|
+
or _get_route_path(scope).rstrip("/") != self.readonly_path
|
|
137
|
+
):
|
|
138
|
+
await self.app(scope, receive, send)
|
|
139
|
+
return
|
|
140
|
+
|
|
141
|
+
from .read_only import read_only_request
|
|
142
|
+
|
|
143
|
+
route_path = _get_route_path(scope)
|
|
144
|
+
prefix = scope["path"][: -len(route_path)]
|
|
145
|
+
path = prefix + self.path
|
|
146
|
+
scope = {**scope, "path": path, "raw_path": path.encode("utf-8")}
|
|
147
|
+
with read_only_request():
|
|
148
|
+
await self.app(scope, receive, send)
|
|
93
149
|
|
|
94
150
|
|
|
95
151
|
@dataclass
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"""Read-only mode — catalog filtering and call-time write blocking (#1569).
|
|
2
2
|
|
|
3
3
|
When ``Settings.read_only_mode`` is on (Tools-tab toggle in the web UI,
|
|
4
|
-
``read_only_mode`` addon option, or ``READ_ONLY_MODE`` env var)
|
|
4
|
+
``read_only_mode`` addon option, or ``READ_ONLY_MODE`` env var), or the
|
|
5
|
+
HTTP connection uses the ``/readonly`` endpoint:
|
|
5
6
|
|
|
6
7
|
- ``ReadOnlyToolsTransform`` hides write-capable tools from the MCP
|
|
7
8
|
catalog at list time, except the exempt mixed read/write tools in
|
|
@@ -14,6 +15,8 @@ When ``Settings.read_only_mode`` is on (Tools-tab toggle in the web UI,
|
|
|
14
15
|
Both consult the live settings singleton per request, so flipping the
|
|
15
16
|
toggle in standalone HTTP mode takes effect without a restart (addon
|
|
16
17
|
and stdio modes pick it up on restart, like every other feature flag).
|
|
18
|
+
The HTTP endpoint additionally restricts its own request context without
|
|
19
|
+
changing the shared settings.
|
|
17
20
|
|
|
18
21
|
A tool counts as write-capable when its ``readOnlyHint`` annotation is
|
|
19
22
|
not ``True`` — the same fail-closed default the policy handlers and the
|
|
@@ -30,7 +33,9 @@ from __future__ import annotations
|
|
|
30
33
|
|
|
31
34
|
import json
|
|
32
35
|
import logging
|
|
33
|
-
from collections.abc import Awaitable, Callable, Sequence
|
|
36
|
+
from collections.abc import Awaitable, Callable, Iterator, Sequence
|
|
37
|
+
from contextlib import contextmanager
|
|
38
|
+
from contextvars import ContextVar
|
|
34
39
|
from typing import TYPE_CHECKING, Any, NamedTuple, NoReturn
|
|
35
40
|
|
|
36
41
|
from fastmcp.server.middleware.middleware import CallNext, Middleware, MiddlewareContext
|
|
@@ -49,6 +54,41 @@ if TYPE_CHECKING:
|
|
|
49
54
|
|
|
50
55
|
logger = logging.getLogger(__name__)
|
|
51
56
|
|
|
57
|
+
_request_read_only: ContextVar[bool] = ContextVar(
|
|
58
|
+
"ha_mcp_request_read_only", default=False
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def is_read_only() -> bool:
|
|
63
|
+
"""Apply the global setting or the current HTTP endpoint's restriction."""
|
|
64
|
+
return get_global_settings().read_only_mode or _request_read_only.get()
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@contextmanager
|
|
68
|
+
def read_only_request() -> Iterator[None]:
|
|
69
|
+
"""Restrict this request and its nested tool calls without affecting others."""
|
|
70
|
+
token = _request_read_only.set(True)
|
|
71
|
+
try:
|
|
72
|
+
yield
|
|
73
|
+
finally:
|
|
74
|
+
_request_read_only.reset(token)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def read_only_remedy_hint() -> str:
|
|
78
|
+
"""User-facing guidance for lifting Read Only Mode.
|
|
79
|
+
|
|
80
|
+
Deliberately never names the ``/readonly`` endpoint suffix: #2433 wants
|
|
81
|
+
this restriction to hold even for an untrusted model that could talk a
|
|
82
|
+
user into dropping it. The global setting has no such escape-hatch risk,
|
|
83
|
+
so it stays nameable when it is the (or an) active source.
|
|
84
|
+
"""
|
|
85
|
+
if get_global_settings().read_only_mode:
|
|
86
|
+
return (
|
|
87
|
+
"To allow changes, the user must turn off Read Only Mode in the "
|
|
88
|
+
"ha-mcp settings UI (Tools tab) or the add-on configuration."
|
|
89
|
+
)
|
|
90
|
+
return "This connection is read-only. If changes are needed, ask the user."
|
|
91
|
+
|
|
52
92
|
|
|
53
93
|
class ReadOnlyExemption(NamedTuple):
|
|
54
94
|
"""One mixed read/write tool that stays enabled in read-only mode.
|
|
@@ -322,9 +362,7 @@ def _raise_read_only_error(
|
|
|
322
362
|
suggestions=[
|
|
323
363
|
"Continue with read-only tools — searching, getting, and "
|
|
324
364
|
+ "listing data all remain available.",
|
|
325
|
-
|
|
326
|
-
+ "Read Only Mode in the ha-mcp settings UI (Tools tab) or "
|
|
327
|
-
+ "the add-on configuration.",
|
|
365
|
+
read_only_remedy_hint(),
|
|
328
366
|
],
|
|
329
367
|
context=context,
|
|
330
368
|
)
|
|
@@ -333,7 +371,7 @@ def _raise_read_only_error(
|
|
|
333
371
|
|
|
334
372
|
def require_write_access(tool_name: str) -> None:
|
|
335
373
|
"""Reject direct tool execution while Read Only Mode is enabled."""
|
|
336
|
-
if
|
|
374
|
+
if is_read_only():
|
|
337
375
|
_raise_read_only_error(tool_name)
|
|
338
376
|
|
|
339
377
|
|
|
@@ -346,7 +384,7 @@ class ReadOnlyToolsTransform(Transform):
|
|
|
346
384
|
"""
|
|
347
385
|
|
|
348
386
|
async def list_tools(self, tools: Sequence[Tool]) -> Sequence[Tool]:
|
|
349
|
-
if not
|
|
387
|
+
if not is_read_only():
|
|
350
388
|
return tools
|
|
351
389
|
return [t for t in tools if read_only_visible(t)]
|
|
352
390
|
|
|
@@ -354,7 +392,7 @@ class ReadOnlyToolsTransform(Transform):
|
|
|
354
392
|
self, name: str, call_next: GetToolNext, *, version: VersionSpec | None = None
|
|
355
393
|
) -> Tool | None:
|
|
356
394
|
tool = await call_next(name, version=version)
|
|
357
|
-
if tool is None or not
|
|
395
|
+
if tool is None or not is_read_only():
|
|
358
396
|
return tool
|
|
359
397
|
return tool if read_only_visible(tool) else None
|
|
360
398
|
|
|
@@ -495,7 +533,7 @@ class ReadOnlyMiddleware(Middleware):
|
|
|
495
533
|
async def on_call_tool(
|
|
496
534
|
self, context: MiddlewareContext, call_next: CallNext
|
|
497
535
|
) -> Any:
|
|
498
|
-
if not
|
|
536
|
+
if not is_read_only():
|
|
499
537
|
return await call_next(context)
|
|
500
538
|
|
|
501
539
|
# RenamedToolAliasMiddleware runs ahead of this one and normally
|
|
@@ -4265,15 +4265,15 @@ class SearchTools:
|
|
|
4265
4265
|
|
|
4266
4266
|
# Surface Read Only Mode after projection so the flag survives any
|
|
4267
4267
|
# fields= filter.
|
|
4268
|
-
|
|
4268
|
+
from ..read_only import is_read_only, read_only_remedy_hint
|
|
4269
|
+
|
|
4270
|
+
if is_read_only():
|
|
4269
4271
|
projected["read_only_mode"] = True
|
|
4270
4272
|
projected["read_only_mode_hint"] = (
|
|
4271
4273
|
"Read Only Mode is ON: write-capable tools are disabled and "
|
|
4272
4274
|
"all write or destructive operations are blocked "
|
|
4273
|
-
"server-side. You can search, read, and analyze freely.
|
|
4274
|
-
"
|
|
4275
|
-
"the ha-mcp settings UI (Tools tab) or the add-on "
|
|
4276
|
-
"configuration."
|
|
4275
|
+
"server-side. You can search, read, and analyze freely. "
|
|
4276
|
+
f"{read_only_remedy_hint()}"
|
|
4277
4277
|
)
|
|
4278
4278
|
|
|
4279
4279
|
# Surface the MCP server's own update status after projection.
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
@@ -276,9 +276,9 @@ def _execute_via(proxy: str, tool_name: str) -> str:
|
|
|
276
276
|
|
|
277
277
|
def _read_only_mode() -> bool:
|
|
278
278
|
"""Whether Read Only Mode is on — consulted per request, like its filter."""
|
|
279
|
-
from ..
|
|
279
|
+
from ..read_only import is_read_only
|
|
280
280
|
|
|
281
|
-
return
|
|
281
|
+
return is_read_only()
|
|
282
282
|
|
|
283
283
|
|
|
284
284
|
def _advertised_routes(name: str, category: Capability) -> list[Capability]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ha-mcp-dev
|
|
3
|
-
Version: 8.4.3.
|
|
3
|
+
Version: 8.4.3.dev2647
|
|
4
4
|
Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
|
|
5
5
|
Author-email: Julien <github@qc-h.net>
|
|
6
6
|
License: MIT
|
|
@@ -408,6 +408,30 @@ For the HA app, the same option is documented in [`homeassistant-addon/DOCS.md`]
|
|
|
408
408
|
|
|
409
409
|
---
|
|
410
410
|
|
|
411
|
+
### Read-only HTTP connections
|
|
412
|
+
|
|
413
|
+
Append `/readonly` to the server's HTTP MCP endpoint to restrict that connection
|
|
414
|
+
to the existing Read Only Mode while other clients keep normal access:
|
|
415
|
+
|
|
416
|
+
```text
|
|
417
|
+
Normal: https://example.com/private_your_secret
|
|
418
|
+
Read-only: https://example.com/private_your_secret/readonly
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
OAuth and OIDC connections use the same login/provider: for example,
|
|
422
|
+
`https://example.com/mcp/readonly`. No additional secret or server is required.
|
|
423
|
+
Read-only connections hide write tools and block write calls, including calls
|
|
424
|
+
through cached tools or search proxies. The global Read Only Mode setting still
|
|
425
|
+
restricts both endpoints when enabled. Reconnect the client after changing its URL
|
|
426
|
+
so it refreshes its tool list.
|
|
427
|
+
|
|
428
|
+
This is a connection mode for automated agents, not a separate permission on the
|
|
429
|
+
credential: the same credentials still work at the normal endpoint. Home Assistant
|
|
430
|
+
webhook URLs also accept the suffix:
|
|
431
|
+
`https://your-ha.example/api/webhook/<webhook-id>/readonly`. This requires the
|
|
432
|
+
updated embedded integration or Webhook Proxy dev app (add-on), together with
|
|
433
|
+
the updated MCP server.
|
|
434
|
+
|
|
411
435
|
## 🧪 Dev Channel
|
|
412
436
|
|
|
413
437
|
Want early access to new features and fixes? Dev releases (`.devN`) are published on every push to master.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/_install_hints.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/_warnings.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/app.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/approval.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/choice.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/config.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/form.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/apps/generative.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/auth.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/cli/generate.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/caching.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/group.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/logging.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/messages.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/progress.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/roots.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2643 → ha_mcp_dev-8.4.3.dev2647}/src/ha_mcp/_vendor/fastmcp/contrib/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|