ha-mcp-dev 8.6.0.dev2955__tar.gz → 8.6.0.dev2958__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/PKG-INFO +1 -1
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/pyproject.toml +1 -1
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/pyproject.toml.orig +1 -1
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +26 -25
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/VENDORED +1 -1
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/__init__.py +1 -1
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/client.py +50 -20
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/group.py +29 -7
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +7 -2
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +69 -3
- ha_mcp_dev-8.6.0.dev2958/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +410 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/resources/template.py +277 -17
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +30 -1
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +59 -1
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +6 -4
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +1 -1
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +55 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +15 -2
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +7 -2
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +51 -20
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +12 -26
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +17 -2
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +1 -19
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +4 -5
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +1 -26
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/server.py +17 -29
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +132 -2
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +52 -12
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +5 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +2 -1
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/requirements.txt +1 -1
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/app_discovery.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/backup_diff.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/backup_entity_ids.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/backup_tags.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/client/admin_routes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/config_backup.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/config_meta.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/config_overrides.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/config_registry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/config_settings.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/http_transport.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/image_info.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/decision_pin.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/decisions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/events.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/mrtr.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/server_channels.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/server_lifespan.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/server_tool_text.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/az.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/area_messages.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/backup_access.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/backup_on_demand.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/blueprint_sources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/bug_report_config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/bug_report_templates.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/coercion.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_helper_collections.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_backup.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/create.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/update.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_write_errors.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/config_write_helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/dev_backup.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/device_enrichment.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/entity_registration.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/entity_update_fields.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/response_helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/scene_discovery.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/component.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/entities.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/legacy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/modes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/overview.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/response.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/search/state.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tool_hints.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/tools/ws_waiters.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/transforms/component_helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/transforms/component_search.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/transforms/write_tool_note.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/dashboard_patch.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/mcp_client_host.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/registry_update_lock.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/visibility/resolver.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "8.6.0.
|
|
7
|
+
version = "8.6.0.dev2958"
|
|
8
8
|
description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13,<3.15"
|
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "8.6.0.
|
|
7
|
+
version = "8.6.0.dev2958"
|
|
8
8
|
description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
# Upper bound widened to <3.15 so the package installs on Home Assistant's
|
{ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
43070e2d4e532684de521b885f385d0841030efa2b1a20bafb76133a5e1379c1 LICENSE
|
|
2
2
|
21859d4324326a6fb383cfd827626db2278088d4659000a8569f55262309a894 REQUIRES.txt
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
e12f954d5272b6d9e098942fc232a0e1993b945b0d7184b0b850df99afafcc79 VENDORED
|
|
4
|
+
3cf3adee844fb112711cfb37a8974f76b7d47b678721e180ff4ae21cada26343 __init__.py
|
|
5
5
|
2ae9ce0d217923abf551b6f8bcf08e516529b9a6abab160bab5d8c9b7e245c3d _compat.py
|
|
6
6
|
0fe101433a655a48e5fd1dde0c75879f3a74f9092d2b935bd71fad19bcfb77a1 _install_hints.py
|
|
7
7
|
a9c59fe78564360444de04484a2b0906569fb58408be3c968be3f81a5e3015a4 _warnings.py
|
|
@@ -47,11 +47,11 @@ f23abd973d004567dacf840728835c74bd94963ab48355990ee27879b598c7a5 client/auth/be
|
|
|
47
47
|
e96f4731af86d4755a597300926782f82219aee6d03fd760698f2c4db66ab8d3 client/auth/client_credentials.py
|
|
48
48
|
6cde4f73a0d978660992617ddf1db98417ffecdace0e25e49e78cb42e55dea09 client/auth/oauth.py
|
|
49
49
|
b7f310d25afea2deec36a8ad055cf81827feaac934d1391a05b7cc92b2c9e5d6 client/caching.py
|
|
50
|
-
|
|
50
|
+
43c887efd89e4f089bb7360e864a39fe210ca6db59f711182aaf38d044020405 client/client.py
|
|
51
51
|
ec3d69cbdc6d1331b028afad95616431d6bd02e91a2bcd76a12c30b6618f3d88 client/dependencies.py
|
|
52
52
|
1c6fbd49eab32cf03f8b1029f398f0fee20245dfc0a6225476622d8d5ed24b2a client/elicitation.py
|
|
53
53
|
abdc07c2ae78249cfb095295120a982db23a7cfbbe90ec50ce5f964475c981e3 client/extension_hooks.py
|
|
54
|
-
|
|
54
|
+
a7fe536d6fc5dbad6a2c8d34b3b8074a0c28e7572ee69c7d816ef8fd4617f2e9 client/group.py
|
|
55
55
|
0648016833612089c873938a63d69cded6336e8c8d9867e9412d4e2dac9c2f97 client/logging.py
|
|
56
56
|
4014857ab79e71cd06f28afaa160f00d9c646c63a63bb99565174933497fc501 client/messages.py
|
|
57
57
|
01e24f9b114fd85aacd62fb99631adedb23e5293e9e72cfc9b2680035364c7a9 client/mixins/__init__.py
|
|
@@ -74,7 +74,7 @@ d576529023ff2096df4238a162f1e6c82fda1eff7a004751a1e09d0c0af46e01 client/transpo
|
|
|
74
74
|
a2fc0c9ba36479b0d79b53b9d43a2ddc0d054a71444437a1b6be5d02228504de client/transports/inference.py
|
|
75
75
|
cd5fdcdb90616756ed695d7d57a30cb420d06c57b776615e81bac2c596b5ec17 client/transports/memory.py
|
|
76
76
|
92c95544d195ce5e49bd1f7f2853fd743bb81bbd22416db63c238227b00c0b4a client/transports/sse.py
|
|
77
|
-
|
|
77
|
+
2ac68c04792107da432242d77f4b6cca6d8923025b5f33cf46a1733da7bcd3c8 client/transports/stdio.py
|
|
78
78
|
aca9276122354f5f7652f4acceac300e5436798429c72c2b3532e88f5efb4985 contrib/README.md
|
|
79
79
|
e5a5146354d214ab73d69bd32d20ea9140a41a4baa31f31936c2de68da848007 contrib/bulk_tool_caller/README.md
|
|
80
80
|
c6f19249a5174d0adcdf57ab0688b51a1ec18a480e9621130e26154cfdeb2f16 contrib/bulk_tool_caller/__init__.py
|
|
@@ -93,7 +93,8 @@ d7ec0ff66e333e21df80829ddd5a1ad9dddd955b2b8456f199e08c732ca1ea77 contrib/mcp_mi
|
|
|
93
93
|
65d2365c668228499112fdf649f35e93f7af4dc652cd08012c67ea6abb55d46a exceptions.py
|
|
94
94
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 experimental/__init__.py
|
|
95
95
|
01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b experimental/transforms/__init__.py
|
|
96
|
-
|
|
96
|
+
bfadd96bae82fce5cd12f3843e039d0ad1d0e83ab283a81973070bd7448a6cda experimental/transforms/code_mode.py
|
|
97
|
+
34acdc402ef277f44a92d4b3c32459a9b55c19712dac82007ec5052e92b80fc4 experimental/transforms/jev_search.py
|
|
97
98
|
a08727048d5bdc6f513fd4161f1a53ae1ffbcf387cc62b6319317946814cd4c5 mcp_config.py
|
|
98
99
|
353a26dc9d40c4e682ebc1411838ee0920a759ced021d264057b86c0335f1a24 prompts/__init__.py
|
|
99
100
|
abddba9c78219818445f1147c21476544c55e3b994d80e8e647ea7072421f2b1 prompts/base.py
|
|
@@ -103,7 +104,7 @@ b5074534e408ad9f8e5a325076e1549cecd0a0c8c7ddfbf016fa3b041c3509cb resources/__in
|
|
|
103
104
|
42591067ae671ba26ee049b081b2e292bd5f7269365e96ce9daf8f8ceafd4a9a resources/base.py
|
|
104
105
|
6c5f589e472b41840b5c1777663495efbdede20e1aeb7adfccaa4360ac4a8a67 resources/function_resource.py
|
|
105
106
|
1617d885ef49690595e063c5453476a7adb84503f31bd8d37c93a43b00d036fe resources/security.py
|
|
106
|
-
|
|
107
|
+
8abf99e12e57b75fd573f903e67b01b69c636761bc52f2dedfa2141324616456 resources/template.py
|
|
107
108
|
f62be5cd46be03e6f4fdaacfc5c5a6acf729516f528e56e146c0aa83a6204e61 resources/types.py
|
|
108
109
|
827d84d4bc780342fdbfd88101ac4f25b8a39b79ae63f8b9d9f636580cec52bb server/__init__.py
|
|
109
110
|
260232a96fb443347da645d6fa1a0d32c9599a7c00e737c285158a3267c708a9 server/auth/__init__.py
|
|
@@ -117,10 +118,10 @@ e52df6b15b5b66edad8e11c71bf32d8f9cacba628a1d7a9ed97e440f6a491296 server/auth/ha
|
|
|
117
118
|
482e01b4ecc8af2714eb1bc50cc7afa0bdbadab1e583171cb9aa70fa2b270af0 server/auth/oauth_proxy/__init__.py
|
|
118
119
|
5f490615f239c44e861b7860fbdabc02e4a768587e9e77259b7695b2628576d3 server/auth/oauth_proxy/consent.py
|
|
119
120
|
66c2b86e445bb5e930eae7ec7c495a20e752ceec57af059fd96de66ebf2fcce0 server/auth/oauth_proxy/models.py
|
|
120
|
-
|
|
121
|
+
aa221b963ec2dc1466a4acc0fc41f440a4f1c1926fede489dd1bbc56f3f1cea0 server/auth/oauth_proxy/proxy.py
|
|
121
122
|
c20a999e75dbfbd5801ccf0172127b316f8bca1807fb3ca282cadcdc0a37295e server/auth/oauth_proxy/ui.py
|
|
122
123
|
a7dfed182cd72300a09136f500738cafd81960807b474fd184143a24fa0898d9 server/auth/oauth_proxy/upstream.py
|
|
123
|
-
|
|
124
|
+
99d06bf47c740b3b42b84269058d6ee71c52fabea047aec8189ca150aa8edd2b server/auth/oidc_proxy.py
|
|
124
125
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 server/auth/providers/__init__.py
|
|
125
126
|
2309357e391e3ca50f368b87581c915f5da83103d6fe8b157fc3f6365ae940f6 server/auth/providers/auth0.py
|
|
126
127
|
2096389558eb1eb799a5e69379dcfffcad2ee0fe7a9bb98b632871581c456cce server/auth/providers/aws.py
|
|
@@ -130,7 +131,7 @@ b682ebb2419462e9bb506f2bf473d8ae33febcce4055df5dd506a4845c81e47f server/auth/pr
|
|
|
130
131
|
0b86ffe4e0b1f06c040b264dbd88a44943ed9d15392419f55956503d83760642 server/auth/providers/descope.py
|
|
131
132
|
d98f08e8041870f3effa331b2837d0073c26079872dd34b501c0804669625442 server/auth/providers/discord.py
|
|
132
133
|
df69c87adbdc2caee72185bdeaf55d19bf5308f94b2756343177556878f44ae2 server/auth/providers/github.py
|
|
133
|
-
|
|
134
|
+
32ccc82663080f5d3e0c423e8c9bdb58b6b560291d60a17c289ad399e410e059 server/auth/providers/google.py
|
|
134
135
|
3a76215676072a4c7e31971e3c79e57a3ea78ff10b79e5fc90cd371915ddd7ff server/auth/providers/huggingface.py
|
|
135
136
|
57fa08d818ae235752a65083d1e19daeb65c7b6354ad81c76aed0257b4ea9e61 server/auth/providers/in_memory.py
|
|
136
137
|
f63a30cdc4778cf0f441a433e6aff9233433f4e0c15e997e2d39b3e02019b0ec server/auth/providers/introspection.py
|
|
@@ -142,11 +143,11 @@ f858f390ad6ca87990e548cdca584cef57fc93a0d2d36b4f5353dad2c4c0f7bf server/auth/pr
|
|
|
142
143
|
df16f6cf532f38b87318d06d7c0f97717699614ada54fcfb53701d5281ed6cc5 server/auth/providers/supabase.py
|
|
143
144
|
3da61543f26146cf2597089f17580ad4a9e5d3423e92425ecc2b1a8a6c9bceda server/auth/providers/workos.py
|
|
144
145
|
9ed8d6fec5e0ca8fdb9716cd0f80f178a0814ed34b2202770f509c1fe96305e5 server/auth/redirect_validation.py
|
|
145
|
-
|
|
146
|
+
0a6d55566e2c33fe15c31969dd68547181205bce148486dcb6183f314abf4141 server/auth/ssrf.py
|
|
146
147
|
871c89e8a16ca2a3cd030b94108abb0bf15d8addab05b398f959da8445f4e6a9 server/caching.py
|
|
147
148
|
38f783123395ffa153bc91af5db1ffac86eceaa249333d2991a59e057a2f4af1 server/completions.py
|
|
148
149
|
542477c828645b4fd2c08bafb7fa1ee4f8721a3f07744af05d9035c8852a1554 server/context.py
|
|
149
|
-
|
|
150
|
+
66e9338f10e07693891eaf68c5654a5a41fdec4e54a3a3a8917d3899613e662f server/dependencies.py
|
|
150
151
|
3affb1031ddcf7f6f02322075340ee46ff21f3cb74f0d3c2f48d21cdc4cd0899 server/elicitation.py
|
|
151
152
|
e0497cf65d8a93849bf2873b94e18abaff2d8a9a879d24db9af22d52548bb696 server/event_store.py
|
|
152
153
|
29bc8c6a594ec12a859fcf54658bedc59e7e3a507e861b3a79a72ca5d2fdb83c server/extensions.py
|
|
@@ -155,7 +156,7 @@ c939ec1886308f99257b07aaa73a4781565d5d3e170fc13b0d8b36f4735a4fda server/lifespa
|
|
|
155
156
|
9ad85391f6cdd905a7168a579afdf423bf9600d5067b09123ac201295e6c1126 server/low_level.py
|
|
156
157
|
dc669c15efc3c6bdeb531a6267860c141bb86d64e49c0ee586805c4866bd0c01 server/middleware/__init__.py
|
|
157
158
|
172f87828b7aa58bcf31e377c149c9fbc05bf6aba377e8e92a8d4757ebda5bf0 server/middleware/authorization.py
|
|
158
|
-
|
|
159
|
+
f5ea7269f47d6fc3ff301530492a3a8d8d15d82870a7d89ad5df361ce0fccd46 server/middleware/caching.py
|
|
159
160
|
32e78726614e5a69b3ec87bb6868b151ad6955f3eaac3a41b5a9d6151a0efa55 server/middleware/dereference.py
|
|
160
161
|
d9d61213e77f496a3d73f2b5115af44732dbdf30bd5ea78d4c3c0d86abd8ad21 server/middleware/error_handling.py
|
|
161
162
|
d55654f305388914c045482ffaea32832fdfc57f17f90f558901ab422fe04cc2 server/middleware/logging.py
|
|
@@ -167,21 +168,21 @@ f866f0fd1fe052a9835c23197ed868ac270727bec9f443d76a35d3d10cc7bdce server/middlew
|
|
|
167
168
|
c065a1287db24cd7662162f6f56a36500a58a9412182348046e3aff4a3750c76 server/middleware/tool_injection.py
|
|
168
169
|
7dbadca2563c9c44dbd242d6f75f53df1827b5ca24e09c76a26a63c450768467 server/mixins/__init__.py
|
|
169
170
|
6272edf875b7f0926b26d97f924fd4f1bd06eb80ef6f90cc18e507df7eedab94 server/mixins/lifespan.py
|
|
170
|
-
|
|
171
|
+
52af4cd66251d312a9c2cc3dd822bf25512f2b8a39f2571dc6e7dd5184ffa56c server/mixins/mcp_operations.py
|
|
171
172
|
ff3963b066eceb0e5a81fd16fbdd0f414e11aeac73959ef7761b121a767fb939 server/mixins/transport.py
|
|
172
173
|
cd4f7cade13e4a23391117605bbbd4e9d9f66c43d949c09e4fef05ff279a5a32 server/providers/__init__.py
|
|
173
174
|
adad3883f3554739df02cbda56f8fa2c50fbd0259c6cc4dd0c6c84281b2043ed server/providers/addressing.py
|
|
174
175
|
cd022ac9e2a9846c76ed95be96b136f36a1d4a9edcde1b73e62062ba43622556 server/providers/aggregate.py
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
176
|
+
93f53dffe65b9751b73dfbb7ae2efd21c50a47392e7acf0a477f6618d2ef3a82 server/providers/base.py
|
|
177
|
+
174acc648b9862c5e744f6dc0085fcb4b30578cf7e0e772af846217587b41bcb server/providers/fastmcp_provider.py
|
|
178
|
+
ae7b241be3607f9702aa8ea5907f7c60fd184403df3914c8c8e69932b5956b27 server/providers/filesystem.py
|
|
178
179
|
0f2e2b16740711527589a4315799c19fb2496337a71b77b9820ead3ab256a729 server/providers/filesystem_discovery.py
|
|
179
180
|
0f0702f2501537c34982eba9d930afde4d22638d1623ce6691198ce46f5c3d34 server/providers/local_provider/__init__.py
|
|
180
181
|
5b0058ec22c9ed8b5c2b3833e7e6beb34066f73f1818df1b62741ddb369b7edf server/providers/local_provider/decorators/__init__.py
|
|
181
182
|
101c860292375904bb89f3f8e4590eb9537f232f4aab4e207ac96f9bad229241 server/providers/local_provider/decorators/prompts.py
|
|
182
183
|
18300b436f36bb796a530e9b3f077c5aaccb5e9eef00a00e9e618321160d8db4 server/providers/local_provider/decorators/resources.py
|
|
183
184
|
793779ff2289d4281e9bca891ffb09e397445e314d0dc9c7640ec817fb999814 server/providers/local_provider/decorators/tools.py
|
|
184
|
-
|
|
185
|
+
91d662fa33ab5c71a889e5be59135dd2780758d295c616fc3b140c6e332dda34 server/providers/local_provider/local_provider.py
|
|
185
186
|
11c75b6557ce98f4855c76aa0d7740df71e704d05fda8435d92f89aee4a5623e server/providers/openapi/README.md
|
|
186
187
|
9e4dd35d653c9363b7c7679b38ca3f653b53a359065507046bce94db5dfe4bd5 server/providers/openapi/__init__.py
|
|
187
188
|
3eedd623727b69f35c701c7f20e5ea499eee0ed43353310a33425cb32ff04798 server/providers/openapi/components.py
|
|
@@ -189,15 +190,15 @@ cd022ac9e2a9846c76ed95be96b136f36a1d4a9edcde1b73e62062ba43622556 server/provide
|
|
|
189
190
|
b00f94d08ce939d3aca4fb4e9d77d34633570e505640bd7c0a3a4cfb27030b05 server/providers/openapi/routing.py
|
|
190
191
|
776be4ae2a017410f3b505fe5a6ade18690f396545115ba3bf4e525f30ea3164 server/providers/prefab_payload.py
|
|
191
192
|
59455808dce7fb5c90fa043ca0a1cbe7d911658f79efe92771dcc1b1109c3789 server/providers/prefab_synthesis.py
|
|
192
|
-
|
|
193
|
+
a03d17e3298444cb16e4c1ccb079f182b184fafe7807b1d914606bf95743b701 server/providers/proxy.py
|
|
193
194
|
6bb7641e4c222ff359a38f9617987cc64a8c3eaf04118346b1e96f8b336bc9da server/providers/skills/__init__.py
|
|
194
195
|
8845d0ceb5a62372ea24f338522998282552941c29801810448444edf85b513d server/providers/skills/_common.py
|
|
195
196
|
ce1a7b8a0adece4168f039721d3c0d196da79ae6d8d2b7835ef13733f6c510ab server/providers/skills/claude_provider.py
|
|
196
197
|
571e579ffa410d5a932dc7afeeb76717171ac927450ecd408ca7b2c99e7c5150 server/providers/skills/directory_provider.py
|
|
197
198
|
a427c8444b114edb0a6bf40541dd0a3c53b8adfb59ad292a3eb785711825e145 server/providers/skills/skill_provider.py
|
|
198
199
|
b759c2e9f832ff7b27a9d4347a12851e235d59f7cfa0360aba5efd57377a4adb server/providers/skills/vendor_providers.py
|
|
199
|
-
|
|
200
|
-
|
|
200
|
+
b1c5da43ebebd945011ade0432f022d0f10966850d6fb43b9530cbf67e26ca6d server/providers/wrapped_provider.py
|
|
201
|
+
13f132a0d4599ce0e221d0e4e258ea3b3db16b2ee963489574880b3c1e83f664 server/server.py
|
|
201
202
|
a50d0db0003d63db49a3ec62b18dc75e267d6e03b7165f11f02992316be4e160 server/session_scoped_event_store.py
|
|
202
203
|
a172b6697b515083db1d9f2466d8c88659d37427ece0d292c26d1646c1e72e2f server/sessions.py
|
|
203
204
|
24b63d7adc0e3e7ebb5528924d9cf2e5789faad798bd39175690c8dca0742ac4 server/telemetry.py
|
|
@@ -207,7 +208,7 @@ ef58b435263324aac98f71dd08057232e2eb39abdaec2697e4f2369e98c7734a server/transfo
|
|
|
207
208
|
d653f84b07153d687b486a19244c4a179e8378f3fb8f34f9f2c6e8ab18ec9dad server/transforms/prompts_as_tools.py
|
|
208
209
|
35823161ae66939a64ed2d4365af0eae4fa02177907b6d2ac9bb9d1e3f3d815f server/transforms/resources_as_tools.py
|
|
209
210
|
250bd40ffdaccfd4b0df19092965d743c1a7d55ff3e6cb812a3ade85e4a5419f server/transforms/search/__init__.py
|
|
210
|
-
|
|
211
|
+
40329f5c2e7da5a487871caef331d9cb6bd94b3dd18ab5581e7cc63c87aafb8b server/transforms/search/base.py
|
|
211
212
|
587b7a7523796b9f56c547104a48ef52da73990fc128b775579ccc92d2373fa8 server/transforms/search/bm25.py
|
|
212
213
|
b81fef10f30d792bc261e76a0f97437a596febd76b67d9b46e264c45eeda770e server/transforms/search/regex.py
|
|
213
214
|
e83d5c70c181f5145ebf4bd2fb4a808f6ebf4eb1ce9a052165a07d983045c44a server/transforms/tool_transform.py
|
|
@@ -233,7 +234,7 @@ a98fe36c4923efe99beddcd67677f1afe3fc56a86d262352e270141d0b208f6a utilities/cli.
|
|
|
233
234
|
d254480ddb82cb17eab1264cb27a06e4538980efdabc70abf4f23279f3c1c3aa utilities/http.py
|
|
234
235
|
5bd8fcffa8a384ed85bd4e251d111fd72345df1788c511611d61fdc51c40aea3 utilities/inspect.py
|
|
235
236
|
eb2034d2a8a60daa08b6191420ef609e9e88a46527330d75c86e9f4645499edb utilities/json_schema.py
|
|
236
|
-
|
|
237
|
+
008236db5e99f0da390288f087be5fdcae34c7124c77c035ab8ad48d263d4ce2 utilities/json_schema_type.py
|
|
237
238
|
41a30eee26f03f4232b3b0ab3e88bfc925feaa4c08077c80f06a7eb8b4c5e1c1 utilities/lifespan.py
|
|
238
239
|
c9734ef52ddc7185828b7a51bee16cff935cc52fef29a7e5c102d76709139790 utilities/logging.py
|
|
239
240
|
91d04debaa395607f66912bbf108371543dd38703c8fc15ffaa8bfea0d8b8344 utilities/mcp_server_config/__init__.py
|
|
@@ -254,7 +255,7 @@ c833f7723b65b8bf55695ab67261860ce5b21532dc6d6a3c6e887cc12e35ab83 utilities/open
|
|
|
254
255
|
8521f1f6091a8cef4154db5342c017fafaf48876869153380b86f7eb741ffa8b utilities/openapi/json_schema_converter.py
|
|
255
256
|
6d833c04a3bc731a66258221e5f15826a41e265e9c80898218ae226e29f4d612 utilities/openapi/models.py
|
|
256
257
|
2e58bc03dd82687ef7a843474eb65c1f644eafe2c039eb0949a61cce8b313de9 utilities/openapi/parser.py
|
|
257
|
-
|
|
258
|
+
a3a027b8cf02e7041865b3a5d4c511f7e5b72af88df109c6b8e4f0c898b3e0a1 utilities/openapi/schemas.py
|
|
258
259
|
9db69a1b408230d652ec39d89867449d504491aeda59fbc7285a14210575b7e3 utilities/pagination.py
|
|
259
260
|
634850f693e36fc0e5c877581bdb7e990bfd7541676288170c6a1d1713755d46 utilities/prefab.py
|
|
260
261
|
3db58fb4f30afb73083baeb8d94c9a23d9875980f091c19592b9eff89588764c utilities/skills.py
|
|
@@ -262,7 +263,7 @@ c833f7723b65b8bf55695ab67261860ce5b21532dc6d6a3c6e887cc12e35ab83 utilities/open
|
|
|
262
263
|
63e6d25c67609e194c5e940602ccf0562ac1617ab33e6f5b5b05a55bfca9c31c utilities/tests.py
|
|
263
264
|
6e158212fb4a31e14b309c7c65aefee8861ac62f8edb2ee06ba359e37df92c37 utilities/timeout.py
|
|
264
265
|
0b105f303612c242d5be4569b185a3e9780b9749f693ba5392ebad223b5aa0d6 utilities/token_cache.py
|
|
265
|
-
|
|
266
|
+
aa8d018a5c09f3322184688b4626b3a72dbc1da4b17f64e6bc638a1ae2c71cdf utilities/types.py
|
|
266
267
|
81c9e16bb563e31101c5dad2f3711994aa4dff8dc0433720899144be44eacea8 utilities/ui.py
|
|
267
268
|
3ec3a6eeda40bce166793f27a109c8f132b29b4125f781cfc2de220c22568b6a utilities/version_check.py
|
|
268
269
|
5e19b700a340ef7fd8974571de2aa190ef1acfc609547aaa1729704bfc241ae2 utilities/versions.py
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
fastmcp-slim==4.0.
|
|
1
|
+
fastmcp-slim==4.0.10
|
|
2
2
|
Vendored by scripts/vendor_fastmcp.py — do not edit by hand.
|
{ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/client.py
RENAMED
|
@@ -580,6 +580,8 @@ class Client(
|
|
|
580
580
|
# Normally disconnects complete in <100ms; this is a safety net for
|
|
581
581
|
# unresponsive servers.
|
|
582
582
|
self._disconnect_timeout: float = fastmcp.settings.client_disconnect_timeout
|
|
583
|
+
# Session stops handed off by exiting contexts; referenced until done.
|
|
584
|
+
self._stoppers: set[asyncio.Task[None]] = set()
|
|
583
585
|
|
|
584
586
|
# Session context management - see class docstring for detailed explanation
|
|
585
587
|
self._session_state = ClientSessionState()
|
|
@@ -1063,39 +1065,67 @@ class Client(
|
|
|
1063
1065
|
that was resetting events outside the lock, causing race conditions.
|
|
1064
1066
|
Event recreation now happens only in _connect() when actually needed.
|
|
1065
1067
|
"""
|
|
1068
|
+
if force:
|
|
1069
|
+
# An explicit close stops the session it finds, in order with the
|
|
1070
|
+
# contexts around it, so it runs here under the lock as before.
|
|
1071
|
+
await self._stop_session(None, force=True)
|
|
1072
|
+
return
|
|
1073
|
+
|
|
1074
|
+
# Release this context's hold before any await. A context that exits
|
|
1075
|
+
# because it was cancelled can be interrupted at every await below, by
|
|
1076
|
+
# an enclosing anyio scope or by a native cancellation that repeats
|
|
1077
|
+
# while it unwinds (as when a caller runs each tool call in its own
|
|
1078
|
+
# task). A hold that is never released keeps the client connected for
|
|
1079
|
+
# good, so a nested exit finishes here without awaiting at all.
|
|
1080
|
+
self._session_state.nesting_counter = max(
|
|
1081
|
+
0, self._session_state.nesting_counter - 1
|
|
1082
|
+
)
|
|
1083
|
+
if self._session_state.nesting_counter > 0:
|
|
1084
|
+
return
|
|
1085
|
+
|
|
1086
|
+
held = self._session_state.session_task
|
|
1087
|
+
if held is None:
|
|
1088
|
+
return
|
|
1089
|
+
# Stop the session in its own task. The exiting context never waits on
|
|
1090
|
+
# the session lock itself, since another task can hold it through a
|
|
1091
|
+
# reconnect that is slow or never finishes: a cancelled exit returns at
|
|
1092
|
+
# once through the shield, and the stop still runs to completion.
|
|
1093
|
+
stopper = asyncio.create_task(self._stop_session(held, force=False))
|
|
1094
|
+
self._stoppers.add(stopper)
|
|
1095
|
+
stopper.add_done_callback(self._stoppers.discard)
|
|
1096
|
+
await asyncio.shield(stopper)
|
|
1097
|
+
|
|
1098
|
+
async def _stop_session(
|
|
1099
|
+
self, held: asyncio.Task[Any] | None, *, force: bool
|
|
1100
|
+
) -> None:
|
|
1101
|
+
"""Stop the session. A last exit passes the session it held, and the stop is
|
|
1102
|
+
skipped if another context now uses it; a forced stop takes whatever is current."""
|
|
1066
1103
|
# ensure only one session is running at a time to avoid race conditions
|
|
1067
1104
|
async with self._session_state.lock:
|
|
1068
|
-
# if we are forcing a disconnect, reset the nesting counter
|
|
1069
1105
|
if force:
|
|
1070
1106
|
self._session_state.nesting_counter = 0
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
self._session_state.nesting_counter
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
# if we are still nested, return
|
|
1079
|
-
if self._session_state.nesting_counter > 0:
|
|
1107
|
+
session_task = self._session_state.session_task
|
|
1108
|
+
elif (
|
|
1109
|
+
self._session_state.session_task is not held
|
|
1110
|
+
or self._session_state.nesting_counter > 0
|
|
1111
|
+
):
|
|
1112
|
+
# Stopped already, or another context connected while we waited.
|
|
1080
1113
|
return
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
if
|
|
1114
|
+
else:
|
|
1115
|
+
session_task = held
|
|
1116
|
+
if session_task is None:
|
|
1084
1117
|
return
|
|
1085
|
-
session_task = self._session_state.session_task
|
|
1086
1118
|
self._session_state.stop_event.set()
|
|
1087
1119
|
# Wait (bounded) for the runner to unwind gracefully. If it
|
|
1088
1120
|
# overruns — e.g. the transport's termination POST is blocked on
|
|
1089
1121
|
# a stale HTTP keep-alive connection — cancel the background
|
|
1090
1122
|
# task so transport resources (httpx connections, subprocess
|
|
1091
1123
|
# pipes) are actually released instead of leaking into the
|
|
1092
|
-
# event loop.
|
|
1093
|
-
# outer cancellation can't abandon cleanup half-done.
|
|
1124
|
+
# event loop.
|
|
1094
1125
|
try:
|
|
1095
|
-
with anyio.
|
|
1096
|
-
with
|
|
1097
|
-
|
|
1098
|
-
await session_task
|
|
1126
|
+
with anyio.move_on_after(self._disconnect_timeout):
|
|
1127
|
+
with suppress(asyncio.CancelledError):
|
|
1128
|
+
await session_task
|
|
1099
1129
|
finally:
|
|
1100
1130
|
if not session_task.done():
|
|
1101
1131
|
session_task.cancel()
|
{ha_mcp_dev-8.6.0.dev2955 → ha_mcp_dev-8.6.0.dev2958}/src/ha_mcp/_vendor/fastmcp/client/group.py
RENAMED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import asyncio
|
|
5
6
|
import contextlib
|
|
6
7
|
import datetime
|
|
7
8
|
from collections.abc import Mapping
|
|
@@ -53,6 +54,8 @@ class ClientGroup:
|
|
|
53
54
|
self._tool_routes: dict[str, ToolRoute] = {}
|
|
54
55
|
self._catalog_loaded = False
|
|
55
56
|
self._route_lock = anyio.Lock()
|
|
57
|
+
# Member closes handed off by exiting contexts; referenced until done.
|
|
58
|
+
self._closers: set[asyncio.Task[bool | None]] = set()
|
|
56
59
|
|
|
57
60
|
@property
|
|
58
61
|
def clients(self) -> Mapping[str, Client[Any]]:
|
|
@@ -130,19 +133,38 @@ class ClientGroup:
|
|
|
130
133
|
exc_type: type[BaseException] | None,
|
|
131
134
|
exc_value: BaseException | None,
|
|
132
135
|
traceback: TracebackType | None,
|
|
136
|
+
) -> bool | None:
|
|
137
|
+
# Release this context's hold before any await, as Client does: a context
|
|
138
|
+
# exited by cancellation can be interrupted at every await, and a hold
|
|
139
|
+
# that is never released keeps every member connected for good.
|
|
140
|
+
self._nesting_counter = max(0, self._nesting_counter - 1)
|
|
141
|
+
held = self._exit_stack
|
|
142
|
+
if self._nesting_counter > 0 or held is None:
|
|
143
|
+
return None
|
|
144
|
+
# Close the members in their own task, so a cancelled exit returns at
|
|
145
|
+
# once instead of waiting on the lifecycle lock, and the close still runs.
|
|
146
|
+
closer = asyncio.create_task(
|
|
147
|
+
self._close_members(held, exc_type, exc_value, traceback)
|
|
148
|
+
)
|
|
149
|
+
self._closers.add(closer)
|
|
150
|
+
closer.add_done_callback(self._closers.discard)
|
|
151
|
+
return await asyncio.shield(closer)
|
|
152
|
+
|
|
153
|
+
async def _close_members(
|
|
154
|
+
self,
|
|
155
|
+
held: contextlib.AsyncExitStack,
|
|
156
|
+
exc_type: type[BaseException] | None,
|
|
157
|
+
exc_value: BaseException | None,
|
|
158
|
+
traceback: TracebackType | None,
|
|
133
159
|
) -> bool | None:
|
|
134
160
|
async with self._lifecycle_lock:
|
|
135
|
-
self.
|
|
136
|
-
|
|
161
|
+
if self._exit_stack is not held or self._nesting_counter > 0:
|
|
162
|
+
# Closed already, or another context entered while we waited.
|
|
137
163
|
return None
|
|
138
|
-
|
|
139
|
-
stack = self._exit_stack
|
|
140
164
|
self._exit_stack = None
|
|
141
165
|
self._tool_routes.clear()
|
|
142
166
|
self._catalog_loaded = False
|
|
143
|
-
|
|
144
|
-
return await stack.__aexit__(exc_type, exc_value, traceback)
|
|
145
|
-
return None
|
|
167
|
+
return await held.__aexit__(exc_type, exc_value, traceback)
|
|
146
168
|
|
|
147
169
|
def _require_connected(self) -> None:
|
|
148
170
|
disconnected = [
|
|
@@ -220,8 +220,13 @@ class StdioTransport(ClientTransport):
|
|
|
220
220
|
|
|
221
221
|
def __del__(self):
|
|
222
222
|
"""Ensure that we send a disconnection signal to the transport task if we are being garbage collected."""
|
|
223
|
-
|
|
224
|
-
|
|
223
|
+
# Subclasses validate the command before calling super().__init__, so an
|
|
224
|
+
# object whose construction raised has no `_stop_event`. Guard instead of
|
|
225
|
+
# letting the interpreter print "Exception ignored in: __del__" over the
|
|
226
|
+
# error the caller is actually meant to see.
|
|
227
|
+
stop_event = getattr(self, "_stop_event", None)
|
|
228
|
+
if stop_event is not None and not stop_event.is_set():
|
|
229
|
+
stop_event.set()
|
|
225
230
|
|
|
226
231
|
def __repr__(self) -> str:
|
|
227
232
|
return (
|
|
@@ -10,8 +10,9 @@ if TYPE_CHECKING:
|
|
|
10
10
|
import anyio
|
|
11
11
|
from ha_mcp._vendor.mcp_types import TextContent
|
|
12
12
|
from pydantic import Field
|
|
13
|
+
from pydantic import ValidationError as PydanticValidationError
|
|
13
14
|
|
|
14
|
-
from ha_mcp._vendor.fastmcp.exceptions import NotFoundError, ToolError
|
|
15
|
+
from ha_mcp._vendor.fastmcp.exceptions import NotFoundError, ToolError, ValidationError
|
|
15
16
|
from ha_mcp._vendor.fastmcp.server.context import Context
|
|
16
17
|
from ha_mcp._vendor.fastmcp.server.transforms import GetToolNext
|
|
17
18
|
from ha_mcp._vendor.fastmcp.server.transforms.catalog import CatalogTransform
|
|
@@ -52,6 +53,64 @@ def _ensure_async(fn: Callable[..., Any]) -> Callable[..., Any]:
|
|
|
52
53
|
return wrapper
|
|
53
54
|
|
|
54
55
|
|
|
56
|
+
_VALIDATION_ERROR_MARKERS = (
|
|
57
|
+
"validation error for",
|
|
58
|
+
"unexpected keyword argument",
|
|
59
|
+
"missing required argument",
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def _legible_call_error(
|
|
64
|
+
tool_name: str, tool: Tool, error: dict[str, Any] | str | Exception
|
|
65
|
+
) -> str:
|
|
66
|
+
"""Rewrite a failed call's error for the model that wrote the code.
|
|
67
|
+
|
|
68
|
+
A failed `call_tool` raises so the failure interrupts the chain instead of
|
|
69
|
+
flowing onward as a return value. Validation failures get the tool's
|
|
70
|
+
parameter list appended — the error names what was wrong, the schema names
|
|
71
|
+
what would be right — and always speak in the name the caller used, not
|
|
72
|
+
the backend's internal identity.
|
|
73
|
+
"""
|
|
74
|
+
validation = isinstance(error, ValidationError)
|
|
75
|
+
if validation and isinstance(error.__cause__, PydanticValidationError):
|
|
76
|
+
text = "; ".join(
|
|
77
|
+
f"{'.'.join(str(part) for part in item['loc']) or 'arguments'}: {item['msg']}"
|
|
78
|
+
for item in error.__cause__.errors(include_url=False)
|
|
79
|
+
)
|
|
80
|
+
else:
|
|
81
|
+
text = json.dumps(error) if isinstance(error, dict) else str(error)
|
|
82
|
+
message = f"call_tool({tool_name!r}) failed: {text}"
|
|
83
|
+
if validation or any(
|
|
84
|
+
marker in text.lower() for marker in _VALIDATION_ERROR_MARKERS
|
|
85
|
+
):
|
|
86
|
+
properties = (tool.parameters or {}).get("properties")
|
|
87
|
+
if isinstance(properties, dict) and properties:
|
|
88
|
+
required = set((tool.parameters or {}).get("required") or [])
|
|
89
|
+
params = ", ".join(
|
|
90
|
+
name + ("*" if name in required else "") for name in properties
|
|
91
|
+
)
|
|
92
|
+
message += f"\nValid parameters for {tool_name} (* = required): {params}"
|
|
93
|
+
return message
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def _error_detail(result: ToolResult) -> dict[str, Any] | str:
|
|
97
|
+
"""What an `is_error` result tells the model: text, else structured, else generic.
|
|
98
|
+
|
|
99
|
+
Non-text blocks are never stringified; an image's base64 payload would
|
|
100
|
+
swamp the model's context without explaining the failure.
|
|
101
|
+
"""
|
|
102
|
+
text = "\n".join(
|
|
103
|
+
item.text
|
|
104
|
+
for item in result.content
|
|
105
|
+
if isinstance(item, TextContent) and item.text
|
|
106
|
+
)
|
|
107
|
+
if text:
|
|
108
|
+
return text
|
|
109
|
+
if result.structured_content is not None:
|
|
110
|
+
return result.structured_content
|
|
111
|
+
return "tool returned an error"
|
|
112
|
+
|
|
113
|
+
|
|
55
114
|
def _unwrap_tool_result(result: ToolResult) -> dict[str, Any] | str:
|
|
56
115
|
"""Convert a ToolResult for use in the sandbox.
|
|
57
116
|
|
|
@@ -257,7 +316,7 @@ ToolDetailLevel = Literal["brief", "detailed", "full"]
|
|
|
257
316
|
"""Detail level for discovery tool output.
|
|
258
317
|
|
|
259
318
|
- ``"brief"``: tool names and one-line descriptions
|
|
260
|
-
- ``"detailed"``: compact markdown with parameter names, types, and required markers
|
|
319
|
+
- ``"detailed"``: compact markdown with parameter names, types, literal values, defaults, and required markers
|
|
261
320
|
- ``"full"``: complete JSON schema
|
|
262
321
|
"""
|
|
263
322
|
|
|
@@ -670,7 +729,14 @@ class CodeMode(CatalogTransform):
|
|
|
670
729
|
if tool is None:
|
|
671
730
|
raise NotFoundError(f"Unknown tool: {tool_name}")
|
|
672
731
|
|
|
673
|
-
|
|
732
|
+
try:
|
|
733
|
+
result = await ctx.fastmcp.call_tool(tool.name, params)
|
|
734
|
+
except (ToolError, ValidationError) as exc:
|
|
735
|
+
raise ToolError(_legible_call_error(tool_name, tool, exc)) from exc
|
|
736
|
+
if result.is_error:
|
|
737
|
+
raise ToolError(
|
|
738
|
+
_legible_call_error(tool_name, tool, _error_detail(result))
|
|
739
|
+
)
|
|
674
740
|
return _unwrap_tool_result(result)
|
|
675
741
|
|
|
676
742
|
return await transform.sandbox_provider.run(
|