ha-mcp-dev 9.0.0.dev3114__tar.gz → 9.0.0.dev3117__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/PKG-INFO +1 -1
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/pyproject.toml +1 -1
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/pyproject.toml.orig +1 -1
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/requirements.txt +1 -1
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +14 -14
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/VENDORED +1 -1
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/asyncio/client.py +4 -2
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/asyncio/server.py +22 -10
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +22 -8
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/frames.py +66 -47
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/legacy/http.py +3 -1
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/proxy.py +6 -7
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/sync/client.py +2 -2
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/sync/connection.py +20 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/sync/server.py +18 -9
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/trio/client.py +2 -2
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/trio/server.py +8 -5
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/uri.py +5 -6
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/version.py +1 -1
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/LICENSE +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev_security.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/mixins/extensions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/_request_clock.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/app_discovery.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/backup_dashboards.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/backup_diff.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/backup_entity_ids.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/backup_helper_target.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/backup_integrations.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/backup_tags.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/backup_zones.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/client/admin_routes.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/client/models.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/config_backup.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/config_meta.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/config_overrides.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/config_registry.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/config_settings.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/http_transport.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/image_info.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/policy/decision_pin.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/policy/decisions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/policy/events.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/policy/mrtr.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/policy/server_channels.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/server_instructions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/server_lifespan.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/server_tool_text.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/_handlers_oauth_callbacks.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/az.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/settings_ui/settings_js/10_oauth_callbacks.js +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/area_messages.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/backup_access.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/backup_on_demand.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/blueprint_sources.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/bug_report_config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/bug_report_templates.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/coercion.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/component_helper_collections.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_entry_backup.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_helpers/create.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_helpers/icon_route.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_helpers/update.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_write_errors.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/config_write_helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/core_contract.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/dashboard_card_describe.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/dev_backup.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/device_enrichment.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/energy_preferences.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/entity_registration.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/entity_removal.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/entity_update_fields.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/flow_helper_lookup.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/helper_flows.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/history_response.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/integration_entry_state.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/log_sources_logbook.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/recorder_errors.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/response_helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/scene_discovery.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/search/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/search/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/search/component.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/search/entities.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/search/legacy.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/search/modes.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/search/overview.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/search/response.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/search/state.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/server_version.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/statistics_calendar.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/statistics_helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/statistics_resets.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/system_restart.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tool_hints.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/tools/ws_waiters.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/transforms/compact_params.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/transforms/component_helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/transforms/component_search.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/transforms/write_tool_note.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/dashboard_patch.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/mcp_client_host.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/registry_update_lock.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/visibility/resolver.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "9.0.0.
|
|
7
|
+
version = "9.0.0.dev3117"
|
|
8
8
|
description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13,<3.15"
|
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "9.0.0.
|
|
7
|
+
version = "9.0.0.dev3117"
|
|
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
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# scripts/vendor_fastmcp.py (fastmcp-slim, mcp, mcp-types) before committing
|
|
6
6
|
# a bump; tests/src/unit/test_vendored_*.py reject stale or altered trees.
|
|
7
7
|
# For a manual pin change, run the same generator and commit its outputs.
|
|
8
|
-
websockets==17.
|
|
8
|
+
websockets==17.2
|
|
9
9
|
fastmcp-slim==4.1.0
|
|
10
10
|
mcp==2.3.0
|
|
11
11
|
mcp-types==2.3.0
|
{ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256
RENAMED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
3d6a0c050d8bec52fabad502e45fb25bd02bcadbd70dea34d447b6a0ff4e6da8 LICENSE
|
|
2
|
-
|
|
2
|
+
a6c00001a575dfb862e0d167e507325c4639b0c87ee7a337b0c734422727a404 VENDORED
|
|
3
3
|
ce6042263ec421ae99244403a787487739dfcc025403c756e35fa3ec49be4034 __init__.py
|
|
4
4
|
c2ee4ddb093c9af060cafaf68219907f8a6b7b301ed3f8bea75db7555adec987 __main__.py
|
|
5
5
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 asyncio/__init__.py
|
|
6
|
-
|
|
6
|
+
581192ec6ae3781ac4968b6ec38e64502ff1acfe38f72ba2a7d4c2066d7216b1 asyncio/client.py
|
|
7
7
|
f2eb6ad56371fab33839a7ad2694e4b5610bea839bf92ae1f76e6d0a63f1e346 asyncio/connection.py
|
|
8
8
|
bc13ddf7722e2f72c4d0e4b179a202223cefca886de7792687efd9868f9b1b35 asyncio/messages.py
|
|
9
9
|
2453543482e4001e4ff5fb7a3cba2035a66aea9f765b3d7dbc89717f1d434e58 asyncio/router.py
|
|
10
|
-
|
|
10
|
+
f5aab916ff9bf604c77c8635879e80e223489ba05eaf921002471d5421316373 asyncio/server.py
|
|
11
11
|
53f2709a7e7d65143a11e7293af322cd0086fd96c0be051fd6293b85a6510b77 auth.py
|
|
12
12
|
7d87f462aad6231fe224303e45675cce1e6f8cef69e99c59be613beb56d4420d cli.py
|
|
13
13
|
eaf4e66220a92297bc794adc98494e63ea0aae21fa394c72a7e846a535af3cc7 client.py
|
|
@@ -16,8 +16,8 @@ eaf4e66220a92297bc794adc98494e63ea0aae21fa394c72a7e846a535af3cc7 client.py
|
|
|
16
16
|
b69d3f132a907ddec260d3879b102278e1fc11df4f49016dd7c7be0ae45e4ce6 exceptions.py
|
|
17
17
|
42466cc5a255965552a75ba1743e6e3c689b75bc7fd3dd46ad555f4b92d7729c extensions/__init__.py
|
|
18
18
|
24d7f2939e370bb56e3c7d103a86e2a8aa06af38c920b8deeaccf920bbce3e5e extensions/base.py
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
d97d5fdd3e47b8e4176d89e61d7f8c937ab5b76d67f94fc585f8d2ea81c189bc extensions/permessage_deflate.py
|
|
20
|
+
62cb106e8c23dbadf19bb5e74006a18dc4650381ddcb5592058b61b1fc7c10fb frames.py
|
|
21
21
|
c909cf963559c15d7f57ea4e49128d2c6feef36ef0142d61ef671c8a88dc43c3 headers.py
|
|
22
22
|
b4b56e36f3400f0b7c775ba2e4a305299099313b49e82a9766f7a880b68f6dfd http11.py
|
|
23
23
|
4ff07d4d4987a1c78a310f8f36985d410007d97771031c1240d790120a882e41 imports.py
|
|
@@ -27,29 +27,29 @@ e6826ead47333dd7578bc45d7b97c0da10f7578a67bfffd9eb8a514573fa1c1b legacy/client.
|
|
|
27
27
|
562123a684f4f5fcf1fd9a9fd1a3460d5b510cd8d768ec3481d0ad6b72e48c57 legacy/exceptions.py
|
|
28
28
|
6f4c0cc7cdd74c85d56683bad299770226ca1db4250dbeeb040ca114491a3029 legacy/framing.py
|
|
29
29
|
d8dcebe40376c6f0c2e4474d3fe901de539cac069436562e8fffa1aff8efee93 legacy/handshake.py
|
|
30
|
-
|
|
30
|
+
e51bb9a87d5dc09f440c0879f82089688eca021ae4e63edf554ffadf2e4a7de2 legacy/http.py
|
|
31
31
|
dcc4e1d7ed24b564ad4425f4d252d5ebd80bcc5ffd8009fc60b144fdb664cd8c legacy/protocol.py
|
|
32
32
|
8529389c54ec23778c45bbb925c2388177a2f546f0d3b452ad28ed2f878cda07 legacy/server.py
|
|
33
33
|
dc7b8204c2d324cc69f491dde49301aad4c5f384ac636f62b871f4cb39ee0ff4 protocol.py
|
|
34
|
-
|
|
34
|
+
83276f75aa0972dc7219166e91dd6f2a29aec65e046214f579ef5a3c7aa39193 proxy.py
|
|
35
35
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 py.typed
|
|
36
36
|
ee41092f540414ef294c1f74c0fe1f51b9336060dc6e44daee34ef762499b509 server.py
|
|
37
37
|
ac9ac33522fd872dc42587353c51e3631e2b75dd6f10b0ae6b40b074588737ff streams.py
|
|
38
38
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 sync/__init__.py
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
0265d98a4c558359b7f727e5d4ebe6f4a637c5a4dfcd7797350dfacaf60c1ea4 sync/client.py
|
|
40
|
+
dd9c4c859f4fcc8ccaccd168f02efc24b2567e39e1d10ccf78c93a87f94fe044 sync/connection.py
|
|
41
41
|
abc2b5bf176ba959356ef9f7cd6d49c74f5395a908592c9870e1c2eee7854269 sync/messages.py
|
|
42
42
|
c0e180bc66cac17caa98d1050425993f77da1efcbfd8c28deced977842fc9c62 sync/router.py
|
|
43
|
-
|
|
43
|
+
a316c9f5bb35f1264e636b9256b4e176d2cef06386c88279838c8541cabe5858 sync/server.py
|
|
44
44
|
4ed5be9dc605bc99a2496da03bcea7804d8156c9e705d2fee07f3c91634361b8 sync/utils.py
|
|
45
45
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 trio/__init__.py
|
|
46
|
-
|
|
46
|
+
951e2e225679024d6027c09b720f371b7a773db90ed3400c2500ae9f9d8505b6 trio/client.py
|
|
47
47
|
d571c39156caddefccf75a4e186798793d286b350ce4d8ea1cea30d0590dae06 trio/connection.py
|
|
48
48
|
4a66c0d64fe58c41ae10764d2741cf0def3ea231ed313897191db41eb3c9b8a9 trio/messages.py
|
|
49
49
|
a992fdfb8e268bd48e393194dc22c13ee68237369f406a99f9f265f61569bfeb trio/router.py
|
|
50
|
-
|
|
50
|
+
0275d2a1425c780c854caa937060db6a3ac406ddaf9033289305af5925d4bb7f trio/server.py
|
|
51
51
|
035d8d6143ce8d06a21aeb1a938de85b33c8702c618a429390024b5ed649bdc6 trio/utils.py
|
|
52
52
|
72ef3d9ff5d05e7a3f83da8fa459a12db6f39c4f8c2956b3500a30b36bb926a5 typing.py
|
|
53
|
-
|
|
53
|
+
4cd1600ef343a207c44b0fbbf17f140e487da49174dda7be76e8eda7113c04eb uri.py
|
|
54
54
|
59db6c876a908872eb5d40449e9dcb6ad30b253663076084adb78e16fadd5ef1 utils.py
|
|
55
|
-
|
|
55
|
+
15757e2221681ad967e40fe2e5a612a46bdb4c11a25948114aca2ba4dbfcde1a version.py
|
{ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/VENDORED
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
websockets==17.
|
|
1
|
+
websockets==17.2
|
|
2
2
|
Vendored by scripts/vendor_websockets.py — do not edit by hand.
|
|
@@ -574,7 +574,7 @@ class connect:
|
|
|
574
574
|
if hasattr(self, "connection"):
|
|
575
575
|
raise RuntimeError("connect() isn't reentrant")
|
|
576
576
|
self.connection = await self
|
|
577
|
-
return self.connection
|
|
577
|
+
return await self.connection.__aenter__()
|
|
578
578
|
|
|
579
579
|
async def __aexit__(
|
|
580
580
|
self,
|
|
@@ -583,7 +583,7 @@ class connect:
|
|
|
583
583
|
traceback: TracebackType | None,
|
|
584
584
|
) -> None:
|
|
585
585
|
try:
|
|
586
|
-
await self.connection.
|
|
586
|
+
return await self.connection.__aexit__(exc_type, exc_value, traceback)
|
|
587
587
|
finally:
|
|
588
588
|
del self.connection
|
|
589
589
|
|
|
@@ -734,6 +734,8 @@ class HTTPProxyConnection(asyncio.Protocol):
|
|
|
734
734
|
self.response: asyncio.Future[Response] = loop.create_future()
|
|
735
735
|
|
|
736
736
|
def run_parser(self) -> None:
|
|
737
|
+
if self.response.done():
|
|
738
|
+
return
|
|
737
739
|
try:
|
|
738
740
|
next(self.parser)
|
|
739
741
|
except StopIteration as exc:
|
|
@@ -552,16 +552,31 @@ def serve(
|
|
|
552
552
|
await stop.wait()
|
|
553
553
|
|
|
554
554
|
Alternatively, await it and call :meth:`~Server.serve_forever` to serve
|
|
555
|
-
requests, then cancel it
|
|
555
|
+
requests, then cancel it to stop the server::
|
|
556
556
|
|
|
557
557
|
server = await serve(handler, host, port)
|
|
558
558
|
await server.serve_forever()
|
|
559
559
|
|
|
560
|
-
|
|
560
|
+
Combining these two patterns works, but is unnecessary: when the context
|
|
561
561
|
manager exits, :meth:`~Server.serve_forever` has already closed the server::
|
|
562
562
|
|
|
563
|
-
async with serve(handler, host, port) as server:
|
|
564
|
-
await server.serve_forever()
|
|
563
|
+
async with serve(handler, host, port) as server: # don't do this!
|
|
564
|
+
await server.serve_forever() # it's redundant
|
|
565
|
+
|
|
566
|
+
You can also stop the server gracefully by calling its
|
|
567
|
+
:meth:`~Server.close` method::
|
|
568
|
+
|
|
569
|
+
server = await serve(handler, host, port)
|
|
570
|
+
try:
|
|
571
|
+
await stop.wait()
|
|
572
|
+
finally:
|
|
573
|
+
server.close()
|
|
574
|
+
await server.wait_closed()
|
|
575
|
+
|
|
576
|
+
By default, closing the server closes connections with code 1001 (going
|
|
577
|
+
away). You can keep connections alive and wait for clients to disconnect::
|
|
578
|
+
|
|
579
|
+
server.close(close_connections=False)
|
|
565
580
|
|
|
566
581
|
Args:
|
|
567
582
|
handler: Connection handler. It receives the WebSocket connection,
|
|
@@ -668,8 +683,7 @@ def serve(
|
|
|
668
683
|
if kwargs.pop("unix", False):
|
|
669
684
|
return await loop.create_unix_server(protocol_factory, **kwargs)
|
|
670
685
|
else:
|
|
671
|
-
|
|
672
|
-
return await loop.create_server(protocol_factory, host, port, **kwargs) # type: ignore[arg-type]
|
|
686
|
+
return await loop.create_server(protocol_factory, host, port, **kwargs)
|
|
673
687
|
|
|
674
688
|
def protocol_factory() -> ServerConnection:
|
|
675
689
|
"""
|
|
@@ -744,12 +758,10 @@ def serve(
|
|
|
744
758
|
server.all_connections.add(connection)
|
|
745
759
|
connection.start_keepalive()
|
|
746
760
|
try:
|
|
747
|
-
|
|
761
|
+
async with connection:
|
|
762
|
+
await handler(connection)
|
|
748
763
|
except Exception:
|
|
749
764
|
connection.logger.error("connection handler failed", exc_info=True)
|
|
750
|
-
await connection.close(CloseCode.INTERNAL_ERROR)
|
|
751
|
-
else:
|
|
752
|
-
await connection.close()
|
|
753
765
|
finally:
|
|
754
766
|
server.all_connections.discard(connection)
|
|
755
767
|
|
|
@@ -56,7 +56,10 @@ class PerMessageDeflate(Extension):
|
|
|
56
56
|
assert remote_no_context_takeover in [False, True]
|
|
57
57
|
assert local_no_context_takeover in [False, True]
|
|
58
58
|
assert 8 <= remote_max_window_bits <= 15
|
|
59
|
-
|
|
59
|
+
# Due to https://github.com/madler/zlib/issues/171, zlib.compressobj
|
|
60
|
+
# rejects wbits=-8 with ValueError: Invalid initialization option.
|
|
61
|
+
# This makes it impossible to support local_max_window_bits = 8.
|
|
62
|
+
assert 9 <= local_max_window_bits <= 15
|
|
60
63
|
assert "wbits" not in compress_settings
|
|
61
64
|
|
|
62
65
|
self.remote_no_context_takeover = remote_no_context_takeover
|
|
@@ -314,11 +317,13 @@ class ClientPerMessageDeflateFactory(ClientExtensionFactory):
|
|
|
314
317
|
server_max_window_bits: Maximum size of the server's LZ77 sliding window
|
|
315
318
|
in bits, between 8 and 15.
|
|
316
319
|
client_max_window_bits: Maximum size of the client's LZ77 sliding window
|
|
317
|
-
in bits, between
|
|
318
|
-
setting a limit.
|
|
320
|
+
in bits, between 9 and 15, or :obj:`True` to indicate support without
|
|
321
|
+
setting a limit. 8 isn't supported due to a `limitation of zlib`_.
|
|
319
322
|
compress_settings: Additional keyword arguments for :func:`zlib.compressobj`,
|
|
320
323
|
excluding ``wbits``.
|
|
321
324
|
|
|
325
|
+
.. _limitation of zlib: https://github.com/madler/zlib/issues/171
|
|
326
|
+
|
|
322
327
|
"""
|
|
323
328
|
|
|
324
329
|
name = ExtensionName("permessage-deflate")
|
|
@@ -340,9 +345,9 @@ class ClientPerMessageDeflateFactory(ClientExtensionFactory):
|
|
|
340
345
|
if not (
|
|
341
346
|
client_max_window_bits is None
|
|
342
347
|
or client_max_window_bits is True
|
|
343
|
-
or
|
|
348
|
+
or 9 <= client_max_window_bits <= 15
|
|
344
349
|
):
|
|
345
|
-
raise ValueError("client_max_window_bits must be between
|
|
350
|
+
raise ValueError("client_max_window_bits must be between 9 and 15")
|
|
346
351
|
if compress_settings is not None and "wbits" in compress_settings:
|
|
347
352
|
raise ValueError(
|
|
348
353
|
"compress_settings must not include wbits, "
|
|
@@ -464,6 +469,9 @@ class ClientPerMessageDeflateFactory(ClientExtensionFactory):
|
|
|
464
469
|
elif client_max_window_bits > self.client_max_window_bits:
|
|
465
470
|
raise NegotiationError("unsupported client_max_window_bits")
|
|
466
471
|
|
|
472
|
+
if client_max_window_bits == 8:
|
|
473
|
+
raise NegotiationError("unsupported client_max_window_bits = 8, use 9")
|
|
474
|
+
|
|
467
475
|
return PerMessageDeflate(
|
|
468
476
|
server_no_context_takeover, # remote_no_context_takeover
|
|
469
477
|
client_no_context_takeover, # local_no_context_takeover
|
|
@@ -512,7 +520,8 @@ class ServerPerMessageDeflateFactory(ServerExtensionFactory):
|
|
|
512
520
|
server_no_context_takeover: Prevent server from using context takeover.
|
|
513
521
|
client_no_context_takeover: Prevent client from using context takeover.
|
|
514
522
|
server_max_window_bits: Maximum size of the server's LZ77 sliding window
|
|
515
|
-
in bits, between
|
|
523
|
+
in bits, between 9 and 15. 8 isn't supported due to a `limitation of
|
|
524
|
+
zlib`_.
|
|
516
525
|
client_max_window_bits: Maximum size of the client's LZ77 sliding window
|
|
517
526
|
in bits, between 8 and 15.
|
|
518
527
|
compress_settings: Additional keyword arguments for :func:`zlib.compressobj`,
|
|
@@ -522,6 +531,8 @@ class ServerPerMessageDeflateFactory(ServerExtensionFactory):
|
|
|
522
531
|
the default behavior is to enable compression without enforcing
|
|
523
532
|
``client_max_window_bits``.
|
|
524
533
|
|
|
534
|
+
.. _limitation of zlib: https://github.com/madler/zlib/issues/171
|
|
535
|
+
|
|
525
536
|
"""
|
|
526
537
|
|
|
527
538
|
name = ExtensionName("permessage-deflate")
|
|
@@ -539,8 +550,8 @@ class ServerPerMessageDeflateFactory(ServerExtensionFactory):
|
|
|
539
550
|
Configure the Per-Message Deflate extension factory.
|
|
540
551
|
|
|
541
552
|
"""
|
|
542
|
-
if not (server_max_window_bits is None or
|
|
543
|
-
raise ValueError("server_max_window_bits must be between
|
|
553
|
+
if not (server_max_window_bits is None or 9 <= server_max_window_bits <= 15):
|
|
554
|
+
raise ValueError("server_max_window_bits must be between 9 and 15")
|
|
544
555
|
if not (client_max_window_bits is None or 8 <= client_max_window_bits <= 15):
|
|
545
556
|
raise ValueError("client_max_window_bits must be between 8 and 15")
|
|
546
557
|
if compress_settings is not None and "wbits" in compress_settings:
|
|
@@ -633,6 +644,9 @@ class ServerPerMessageDeflateFactory(ServerExtensionFactory):
|
|
|
633
644
|
elif server_max_window_bits > self.server_max_window_bits:
|
|
634
645
|
server_max_window_bits = self.server_max_window_bits
|
|
635
646
|
|
|
647
|
+
if server_max_window_bits == 8:
|
|
648
|
+
raise NegotiationError("unsupported server_max_window_bits = 8, use 9")
|
|
649
|
+
|
|
636
650
|
# client_max_window_bits
|
|
637
651
|
|
|
638
652
|
# Config Req. Resp.
|
{ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/frames.py
RENAMED
|
@@ -4,6 +4,7 @@ import dataclasses
|
|
|
4
4
|
import enum
|
|
5
5
|
import io
|
|
6
6
|
import os
|
|
7
|
+
import re
|
|
7
8
|
import secrets
|
|
8
9
|
import struct
|
|
9
10
|
from collections.abc import Generator, Sequence
|
|
@@ -26,6 +27,8 @@ __all__ = [
|
|
|
26
27
|
"Close",
|
|
27
28
|
]
|
|
28
29
|
|
|
30
|
+
is_space_or_printable_ascii = re.compile(rb"[\x09-\x0D\x20-\x7E]*").fullmatch
|
|
31
|
+
|
|
29
32
|
|
|
30
33
|
class Opcode(enum.IntEnum):
|
|
31
34
|
"""Opcode values for WebSocket frames."""
|
|
@@ -150,10 +153,8 @@ class Frame:
|
|
|
150
153
|
conveniently. Instead, it shows the beginning and the end. It's robust
|
|
151
154
|
to incorrect data.
|
|
152
155
|
|
|
153
|
-
It attempts to decode UTF-8
|
|
154
|
-
|
|
155
|
-
It applies the same logic to continuation frames, because we don't know
|
|
156
|
-
if they continue a text frame or a binary frame.
|
|
156
|
+
It attempts to decode UTF-8 in data frames, even in binary frames,
|
|
157
|
+
because those frequently contain UTF-8 data.
|
|
157
158
|
|
|
158
159
|
"""
|
|
159
160
|
expect_text = self.DEFAULT_IS_TEXT.get(self.opcode)
|
|
@@ -177,58 +178,76 @@ class Frame:
|
|
|
177
178
|
This is a helper for the __str__ method.
|
|
178
179
|
|
|
179
180
|
"""
|
|
181
|
+
data_repr: str = ""
|
|
182
|
+
is_text: bool | None = None
|
|
183
|
+
|
|
180
184
|
if not self.data:
|
|
181
185
|
return "''", self.DEFAULT_IS_TEXT.get(self.opcode)
|
|
182
186
|
|
|
183
|
-
#
|
|
184
|
-
# Fall back to
|
|
187
|
+
# Close frames: parse close code and reason and display them as text.
|
|
188
|
+
# Fall back to binary when the payload is malformed.
|
|
185
189
|
|
|
186
190
|
if self.opcode is CLOSE:
|
|
187
191
|
try:
|
|
188
|
-
|
|
192
|
+
data_repr = str(Close.parse(self.data))
|
|
193
|
+
is_text = True
|
|
189
194
|
except (ProtocolError, UnicodeDecodeError):
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
#
|
|
194
|
-
#
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
if is_text:
|
|
209
|
-
data_repr = repr((data_start + data_end).decode(errors="replace"))
|
|
195
|
+
data_repr = " ".join(f"{byte:02x}" for byte in self.data)
|
|
196
|
+
is_text = False
|
|
197
|
+
|
|
198
|
+
# Control frames: display printable ASCII payloads as text, else binary.
|
|
199
|
+
# We could decode UTF-8 payloads, but this causes confusion when random
|
|
200
|
+
# 4-bytes binary payloads are accidentally valid UTF-8 sequences.
|
|
201
|
+
|
|
202
|
+
elif self.opcode in CTRL_OPCODES:
|
|
203
|
+
if is_space_or_printable_ascii(self.data):
|
|
204
|
+
data_repr = repr(bytes(self.data).decode("ascii"))
|
|
205
|
+
is_text = True
|
|
206
|
+
else:
|
|
207
|
+
data_repr = " ".join(f"{byte:02x}" for byte in self.data)
|
|
208
|
+
is_text = False
|
|
209
|
+
|
|
210
|
+
# Data frames: check whether the payload is UTF-8, regardless of opcode,
|
|
211
|
+
# in order to display nicely UTF-8 text in binary frames, and be robust.
|
|
212
|
+
# Also support frames fragmented within UTF-8 sequences.
|
|
210
213
|
|
|
211
214
|
else:
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
data
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
215
|
+
if len(self.data) > 4 * self.MAX_LOG_SIZE:
|
|
216
|
+
# Process only the start and end, as the middle will be elided.
|
|
217
|
+
# Cast to bytes because self.data could be a memoryview.
|
|
218
|
+
data_start = bytes(self.data[: 8 * self.MAX_LOG_SIZE // 3])
|
|
219
|
+
data_end = bytes(self.data[-4 * self.MAX_LOG_SIZE // 3 :])
|
|
220
|
+
is_text = is_utf8_fragment(
|
|
221
|
+
data_start,
|
|
222
|
+
must_start_clean=self.opcode != CONT,
|
|
223
|
+
) and is_utf8_fragment(
|
|
224
|
+
data_end,
|
|
225
|
+
must_end_clean=self.fin,
|
|
226
|
+
)
|
|
227
|
+
if is_text:
|
|
228
|
+
data_repr = repr((data_start + data_end).decode(errors="replace"))
|
|
229
|
+
|
|
230
|
+
else:
|
|
231
|
+
# Cast to bytes because self.data could be a memoryview.
|
|
232
|
+
data = bytes(self.data)
|
|
233
|
+
is_text = is_utf8_fragment(
|
|
234
|
+
data,
|
|
235
|
+
must_start_clean=self.opcode != CONT,
|
|
236
|
+
must_end_clean=self.fin,
|
|
237
|
+
)
|
|
238
|
+
if is_text:
|
|
239
|
+
data_repr = repr(data.decode(errors="replace"))
|
|
240
|
+
|
|
241
|
+
# When the payload is text (except perhaps for boundaries), we have
|
|
242
|
+
# enough in ``data_repr``. Do the same when the payload is binary.
|
|
243
|
+
|
|
244
|
+
if not is_text:
|
|
245
|
+
binary = self.data
|
|
246
|
+
if len(binary) > self.MAX_LOG_SIZE // 3:
|
|
247
|
+
cut = (self.MAX_LOG_SIZE // 3 - 1) // 3 # by default cut = 8
|
|
248
|
+
# Encode two dummy bytes to force eliding and adding an ellipsis.
|
|
249
|
+
binary = b"".join([binary[: 2 * cut], b"\x00\x00", binary[-cut:]])
|
|
250
|
+
data_repr = " ".join(f"{byte:02x}" for byte in binary)
|
|
232
251
|
|
|
233
252
|
# Elide the middle of the representation to fit the maximum log size.
|
|
234
253
|
|
{ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/legacy/http.py
RENAMED
|
@@ -175,7 +175,9 @@ async def read_headers(stream: asyncio.StreamReader) -> Headers:
|
|
|
175
175
|
|
|
176
176
|
name = raw_name.decode("ascii") # guaranteed to be ASCII at this point
|
|
177
177
|
value = raw_value.decode("ascii", "surrogateescape")
|
|
178
|
-
|
|
178
|
+
|
|
179
|
+
# Since we just validated raw_value, we don't need to revalidate it.
|
|
180
|
+
headers.set_insecure(name, value)
|
|
179
181
|
|
|
180
182
|
else:
|
|
181
183
|
raise SecurityError("too many HTTP headers")
|
{ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/proxy.py
RENAMED
|
@@ -8,7 +8,7 @@ from .datastructures import Headers
|
|
|
8
8
|
from .exceptions import InvalidProxy
|
|
9
9
|
from .headers import build_authorization_basic, build_host
|
|
10
10
|
from .http11 import USER_AGENT
|
|
11
|
-
from .uri import
|
|
11
|
+
from .uri import WebSocketURI
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
__all__ = ["get_proxy", "parse_proxy", "Proxy"]
|
|
@@ -78,8 +78,11 @@ def parse_proxy(proxy: str) -> Proxy:
|
|
|
78
78
|
password = parsed.password
|
|
79
79
|
# urllib.parse.urlparse accepts URLs with a username but without a
|
|
80
80
|
# password. This doesn't make sense for HTTP Basic Auth credentials.
|
|
81
|
-
if username is not None
|
|
82
|
-
|
|
81
|
+
if username is not None:
|
|
82
|
+
if password is None:
|
|
83
|
+
raise InvalidProxy(proxy, "username provided without password")
|
|
84
|
+
username = urllib.parse.unquote(username, errors="strict")
|
|
85
|
+
password = urllib.parse.unquote(password, errors="strict")
|
|
83
86
|
|
|
84
87
|
try:
|
|
85
88
|
proxy.encode("ascii")
|
|
@@ -87,10 +90,6 @@ def parse_proxy(proxy: str) -> Proxy:
|
|
|
87
90
|
# Input contains non-ASCII characters.
|
|
88
91
|
# It must be an IRI. Convert it to a URI.
|
|
89
92
|
host = host.encode("idna").decode()
|
|
90
|
-
if username is not None:
|
|
91
|
-
assert password is not None
|
|
92
|
-
username = urllib.parse.quote(username, safe=DELIMS)
|
|
93
|
-
password = urllib.parse.quote(password, safe=DELIMS)
|
|
94
93
|
|
|
95
94
|
return Proxy(scheme, host, port, username, password)
|
|
96
95
|
|
{ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/sync/client.py
RENAMED
|
@@ -521,7 +521,7 @@ class reconnect:
|
|
|
521
521
|
raise RuntimeError("connect() isn't reentrant")
|
|
522
522
|
self.connection = self.connect()
|
|
523
523
|
self.connection.pending_legacy_warning = False
|
|
524
|
-
return self.connection
|
|
524
|
+
return self.connection.__enter__()
|
|
525
525
|
|
|
526
526
|
def __exit__(
|
|
527
527
|
self,
|
|
@@ -530,7 +530,7 @@ class reconnect:
|
|
|
530
530
|
exc_traceback: TracebackType | None,
|
|
531
531
|
) -> None:
|
|
532
532
|
try:
|
|
533
|
-
self.connection.
|
|
533
|
+
return self.connection.__exit__(exc_type, exc_value, exc_traceback)
|
|
534
534
|
finally:
|
|
535
535
|
del self.connection
|
|
536
536
|
|
|
@@ -612,6 +612,26 @@ class Connection:
|
|
|
612
612
|
# They mean that the connection is closed, which was the goal.
|
|
613
613
|
pass
|
|
614
614
|
|
|
615
|
+
def wait_closed(self, timeout: float | None = None) -> bool:
|
|
616
|
+
"""
|
|
617
|
+
Wait until the connection is closed.
|
|
618
|
+
|
|
619
|
+
:meth:`wait_closed` waits for the closing handshake to complete and for
|
|
620
|
+
the TCP connection to terminate.
|
|
621
|
+
|
|
622
|
+
If a timeout is provided and elapses before the connection is closed,
|
|
623
|
+
:meth:`wait_closed` returns :obj:`False`. Else, it returns :obj:`True`.
|
|
624
|
+
|
|
625
|
+
Args:
|
|
626
|
+
timeout: Optional timeout in seconds.
|
|
627
|
+
|
|
628
|
+
Returns:
|
|
629
|
+
Whether the connection is closed.
|
|
630
|
+
|
|
631
|
+
"""
|
|
632
|
+
self.recv_events_thread.join(timeout)
|
|
633
|
+
return not self.recv_events_thread.is_alive()
|
|
634
|
+
|
|
615
635
|
def ping(
|
|
616
636
|
self,
|
|
617
637
|
data: DataLike | None = None,
|
{ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/sync/server.py
RENAMED
|
@@ -314,16 +314,20 @@ class Server:
|
|
|
314
314
|
|
|
315
315
|
try:
|
|
316
316
|
try:
|
|
317
|
+
# Capture the socket name to prevent a race condition in case
|
|
318
|
+
# the socket is closed between registering it with the poller
|
|
319
|
+
# and logging the "server listening on ..." message.
|
|
320
|
+
socket_name = get_socket_name(self.socket)
|
|
317
321
|
poller.register(self.socket, selectors.EVENT_READ)
|
|
318
322
|
except (OSError, ValueError): # pragma: no cover
|
|
319
|
-
# shutdown()
|
|
323
|
+
# shutdown() ran before get_socket_name() or poller.register().
|
|
320
324
|
# This may result in:
|
|
321
325
|
# * OSError: [Errno 9] Bad file descriptor
|
|
322
|
-
# (only
|
|
326
|
+
# (only seen on free-threaded Python for poller.register())
|
|
323
327
|
# * ValueError: Invalid file descriptor: -1
|
|
324
328
|
return
|
|
325
329
|
|
|
326
|
-
self.logger.info("server listening on %s",
|
|
330
|
+
self.logger.info("server listening on %s", socket_name)
|
|
327
331
|
|
|
328
332
|
while True:
|
|
329
333
|
poller.select()
|
|
@@ -540,8 +544,15 @@ def serve(
|
|
|
540
544
|
with serve(handler, ...) as server:
|
|
541
545
|
server.serve_forever()
|
|
542
546
|
|
|
543
|
-
|
|
544
|
-
|
|
547
|
+
You can stop the server gracefully by calling its :meth:`~Server.shutdown`
|
|
548
|
+
method from another thread::
|
|
549
|
+
|
|
550
|
+
server.shutdown()
|
|
551
|
+
|
|
552
|
+
By default, closing the server closes connections with code 1001 (going
|
|
553
|
+
away). You can keep connections alive and wait for clients to disconnect::
|
|
554
|
+
|
|
555
|
+
server.shutdown(close_connections=False)
|
|
545
556
|
|
|
546
557
|
Args:
|
|
547
558
|
handler: Connection handler. It receives the WebSocket connection,
|
|
@@ -766,12 +777,10 @@ def serve(
|
|
|
766
777
|
server.all_connections.add(connection)
|
|
767
778
|
connection.start_keepalive()
|
|
768
779
|
try:
|
|
769
|
-
|
|
780
|
+
with connection:
|
|
781
|
+
handler(connection)
|
|
770
782
|
except Exception:
|
|
771
783
|
connection.logger.error("connection handler failed", exc_info=True)
|
|
772
|
-
connection.close(CloseCode.INTERNAL_ERROR)
|
|
773
|
-
else:
|
|
774
|
-
connection.close()
|
|
775
784
|
finally:
|
|
776
785
|
with server.lock:
|
|
777
786
|
server.all_connections.discard(connection)
|
{ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/trio/client.py
RENAMED
|
@@ -549,7 +549,7 @@ class connect:
|
|
|
549
549
|
await self.__aenter_nursery__()
|
|
550
550
|
try:
|
|
551
551
|
self.connection = await self.connect(self.nursery)
|
|
552
|
-
return self.connection
|
|
552
|
+
return await self.connection.__aenter__()
|
|
553
553
|
except BaseException as exc:
|
|
554
554
|
await self.__aexit_nursery__(type(exc), exc, exc.__traceback__)
|
|
555
555
|
raise AssertionError("expected __aexit_nursery__ to re-raise the exception")
|
|
@@ -562,7 +562,7 @@ class connect:
|
|
|
562
562
|
) -> None:
|
|
563
563
|
try:
|
|
564
564
|
try:
|
|
565
|
-
await self.connection.
|
|
565
|
+
return await self.connection.__aexit__(exc_type, exc_value, traceback)
|
|
566
566
|
finally:
|
|
567
567
|
del self.connection
|
|
568
568
|
finally:
|
{ha_mcp_dev-9.0.0.dev3114 → ha_mcp_dev-9.0.0.dev3117}/src/ha_mcp/_vendor/websockets/trio/server.py
RENAMED
|
@@ -439,7 +439,7 @@ async def serve(
|
|
|
439
439
|
async with server:
|
|
440
440
|
await stop.wait()
|
|
441
441
|
|
|
442
|
-
Alternatively,
|
|
442
|
+
Alternatively, you can stop the server gracefully by calling its
|
|
443
443
|
:meth:`~Server.aclose` method::
|
|
444
444
|
|
|
445
445
|
with trio.open_nursery() as nursery:
|
|
@@ -449,6 +449,11 @@ async def serve(
|
|
|
449
449
|
finally:
|
|
450
450
|
await server.aclose()
|
|
451
451
|
|
|
452
|
+
By default, closing the server closes connections with code 1001 (going
|
|
453
|
+
away). You can keep connections alive and wait for clients to disconnect::
|
|
454
|
+
|
|
455
|
+
await server.aclose(close_connections=False)
|
|
456
|
+
|
|
452
457
|
Args:
|
|
453
458
|
handler: Connection handler. It receives the WebSocket connection,
|
|
454
459
|
which is a :class:`ServerConnection`, in argument.
|
|
@@ -639,12 +644,10 @@ async def serve(
|
|
|
639
644
|
server.all_connections.add(connection)
|
|
640
645
|
connection.start_keepalive()
|
|
641
646
|
try:
|
|
642
|
-
|
|
647
|
+
async with connection:
|
|
648
|
+
await handler(connection)
|
|
643
649
|
except Exception:
|
|
644
650
|
connection.logger.error("connection handler failed", exc_info=True)
|
|
645
|
-
await connection.aclose(CloseCode.INTERNAL_ERROR)
|
|
646
|
-
else:
|
|
647
|
-
await connection.aclose()
|
|
648
651
|
finally:
|
|
649
652
|
server.all_connections.discard(connection)
|
|
650
653
|
|