ha-mcp-dev 8.5.0.dev2799__tar.gz → 8.5.0.dev2801__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.5.0.dev2799/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.5.0.dev2801}/PKG-INFO +1 -1
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/pyproject.toml +1 -1
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +20 -20
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/VENDORED +1 -1
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/__init__.py +1 -1
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +1 -1
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +2 -2
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +1 -1
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +1 -1
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +39 -20
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +23 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +7 -3
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +25 -1
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +58 -21
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/server.py +35 -13
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +11 -9
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +69 -23
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +1 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +5 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +20 -29
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +11 -1
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +3 -3
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +4 -1
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/requirements.txt +1 -1
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/MANIFEST.in +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/setup.cfg +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/client/admin_routes.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/http_transport.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/policy/decision_pin.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/policy/decisions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/policy/events.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/evals/area-target-over-entity-list/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/evals/arrive-home-automation/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/evals/assist-shortcut-card/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/evals/avg-temperature/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/evals/backup-deletion-confirmation/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/evals/blueprint-authoring/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/evals/button-event-entity/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/evals/device-id-trigger-migration/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/evals/helper-flow-fields-not-platform-yaml/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/evals/media-player-song/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/evals/motion-light-automation-mode/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/evals/rename-entity-impact-analysis/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/evals/template-attributes-yaml-exception/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/evals/timer-finished-automation/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/evals/vacuum-last-clean/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/scripts/check_eval_cases.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/server_lifespan.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/az.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/blueprint_sources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/entity_registration.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/scene_discovery.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/transforms/component_search.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/transforms/write_tool_note.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/dashboard_patch.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/mcp_client_host.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/registry_update_lock.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/tests/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/tests/test_constants.py +0 -0
- {ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/tests/test_env_manager.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "8.5.0.
|
|
7
|
+
version = "8.5.0.dev2801"
|
|
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.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
43070e2d4e532684de521b885f385d0841030efa2b1a20bafb76133a5e1379c1 LICENSE
|
|
2
2
|
21859d4324326a6fb383cfd827626db2278088d4659000a8569f55262309a894 REQUIRES.txt
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
8b4e81d4cab8dedb5288e049b552561ecd69fec834a6d5d8520cf1a2d01a4ba4 VENDORED
|
|
4
|
+
d6384f05e63f59d7abb2618a31e8f419a6675552ea1a7fc73a9f5b430012e0e2 __init__.py
|
|
5
5
|
2ae9ce0d217923abf551b6f8bcf08e516529b9a6abab160bab5d8c9b7e245c3d _compat.py
|
|
6
6
|
0fe101433a655a48e5fd1dde0c75879f3a74f9092d2b935bd71fad19bcfb77a1 _install_hints.py
|
|
7
7
|
a9c59fe78564360444de04484a2b0906569fb58408be3c968be3f81a5e3015a4 _warnings.py
|
|
@@ -55,15 +55,15 @@ dc1d498f1d723a1447cb4fa358b3dcf786eb7f4e1b048c3238b28ced34c23b67 client/group.p
|
|
|
55
55
|
0648016833612089c873938a63d69cded6336e8c8d9867e9412d4e2dac9c2f97 client/logging.py
|
|
56
56
|
4014857ab79e71cd06f28afaa160f00d9c646c63a63bb99565174933497fc501 client/messages.py
|
|
57
57
|
01e24f9b114fd85aacd62fb99631adedb23e5293e9e72cfc9b2680035364c7a9 client/mixins/__init__.py
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
a286df8775a6de31aa19ff6f26002a6f612a9ab36acf4e8629b52da44e406da4 client/mixins/prompts.py
|
|
59
|
+
26c5c96f8ffa53ebf035667efde96418750eebeb016c6d79ab2f5f4fe087718e client/mixins/resources.py
|
|
60
|
+
c78ce42cd9e3496947d582c548d9852dad251407635b1f44ba2ff41ed60a0b6b client/mixins/tools.py
|
|
61
61
|
e418845c0228e016596d96d1a962f2d0ccb814f7b769ee0b08e9f158de44fe89 client/oauth_callback.py
|
|
62
62
|
c3a98f99610d06c9b95fd9df0f7acefacbfc4756a9f62bbd0a64df880ccd01ca client/progress.py
|
|
63
63
|
5aa421cd60f10be7bdab46641ade22e90e41bf6a6226cb2d26814fb53ffcf406 client/roots.py
|
|
64
64
|
d759cb6643a356a15c4537185597567349fe713beae579c48e48ed65ec35cbb0 client/sampling/__init__.py
|
|
65
65
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 client/sampling/handlers/__init__.py
|
|
66
|
-
|
|
66
|
+
01c00f9d12ab4db3ec98bb032b0884b186a5aa73222e30b0fb5b88fba6e66c8a client/sampling/handlers/anthropic.py
|
|
67
67
|
74b2ef4eaf706dacbdbeb060ccfaf5036e7053a0db51e7367fd2450ce892b3f5 client/sampling/handlers/google_genai.py
|
|
68
68
|
a41ee550a4a16f8965afe7eb9e5afc4fb94e1683afab9777857dfb1917e0ab7a client/sampling/handlers/openai.py
|
|
69
69
|
dd343adbd063873c835400ae2c30dcfd451acf2712c347244bca63c0d7e1ae51 client/telemetry.py
|
|
@@ -93,7 +93,7 @@ d7ec0ff66e333e21df80829ddd5a1ad9dddd955b2b8456f199e08c732ca1ea77 contrib/mcp_mi
|
|
|
93
93
|
65d2365c668228499112fdf649f35e93f7af4dc652cd08012c67ea6abb55d46a exceptions.py
|
|
94
94
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 experimental/__init__.py
|
|
95
95
|
01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b experimental/transforms/__init__.py
|
|
96
|
-
|
|
96
|
+
15e2f6aa9dc2051af34bb5d0470adc8ec45f402a50706ff7fe950c2f2dc5184f experimental/transforms/code_mode.py
|
|
97
97
|
a08727048d5bdc6f513fd4161f1a53ae1ffbcf387cc62b6319317946814cd4c5 mcp_config.py
|
|
98
98
|
353a26dc9d40c4e682ebc1411838ee0920a759ced021d264057b86c0335f1a24 prompts/__init__.py
|
|
99
99
|
abddba9c78219818445f1147c21476544c55e3b994d80e8e647ea7072421f2b1 prompts/base.py
|
|
@@ -117,7 +117,7 @@ e52df6b15b5b66edad8e11c71bf32d8f9cacba628a1d7a9ed97e440f6a491296 server/auth/ha
|
|
|
117
117
|
482e01b4ecc8af2714eb1bc50cc7afa0bdbadab1e583171cb9aa70fa2b270af0 server/auth/oauth_proxy/__init__.py
|
|
118
118
|
5f490615f239c44e861b7860fbdabc02e4a768587e9e77259b7695b2628576d3 server/auth/oauth_proxy/consent.py
|
|
119
119
|
66c2b86e445bb5e930eae7ec7c495a20e752ceec57af059fd96de66ebf2fcce0 server/auth/oauth_proxy/models.py
|
|
120
|
-
|
|
120
|
+
59fdac16c65da5bacd0994f92d1e3f23dc39253d984ef16d5cc5c01a1b48380a server/auth/oauth_proxy/proxy.py
|
|
121
121
|
c20a999e75dbfbd5801ccf0172127b316f8bca1807fb3ca282cadcdc0a37295e server/auth/oauth_proxy/ui.py
|
|
122
122
|
a7dfed182cd72300a09136f500738cafd81960807b474fd184143a24fa0898d9 server/auth/oauth_proxy/upstream.py
|
|
123
123
|
b44d5db31e3f760b18d97a363027d2777ec0c7ee982339eb2f5d507894bc121e server/auth/oidc_proxy.py
|
|
@@ -151,7 +151,7 @@ df16f6cf532f38b87318d06d7c0f97717699614ada54fcfb53701d5281ed6cc5 server/auth/pr
|
|
|
151
151
|
e0497cf65d8a93849bf2873b94e18abaff2d8a9a879d24db9af22d52548bb696 server/event_store.py
|
|
152
152
|
29bc8c6a594ec12a859fcf54658bedc59e7e3a507e861b3a79a72ca5d2fdb83c server/extensions.py
|
|
153
153
|
bc157f88e7854f970ba57108745eeb72c04a95fc593a102b6c8a54f5c01e8998 server/http.py
|
|
154
|
-
|
|
154
|
+
c939ec1886308f99257b07aaa73a4781565d5d3e170fc13b0d8b36f4735a4fda server/lifespan.py
|
|
155
155
|
9ad85391f6cdd905a7168a579afdf423bf9600d5067b09123ac201295e6c1126 server/low_level.py
|
|
156
156
|
dc669c15efc3c6bdeb531a6267860c141bb86d64e49c0ee586805c4866bd0c01 server/middleware/__init__.py
|
|
157
157
|
172f87828b7aa58bcf31e377c149c9fbc05bf6aba377e8e92a8d4757ebda5bf0 server/middleware/authorization.py
|
|
@@ -181,7 +181,7 @@ cd022ac9e2a9846c76ed95be96b136f36a1d4a9edcde1b73e62062ba43622556 server/provide
|
|
|
181
181
|
101c860292375904bb89f3f8e4590eb9537f232f4aab4e207ac96f9bad229241 server/providers/local_provider/decorators/prompts.py
|
|
182
182
|
18300b436f36bb796a530e9b3f077c5aaccb5e9eef00a00e9e618321160d8db4 server/providers/local_provider/decorators/resources.py
|
|
183
183
|
793779ff2289d4281e9bca891ffb09e397445e314d0dc9c7640ec817fb999814 server/providers/local_provider/decorators/tools.py
|
|
184
|
-
|
|
184
|
+
0a16d7a534974141054d6cb962e7ed7907390191bf40c9f00a68bb43d6b01205 server/providers/local_provider/local_provider.py
|
|
185
185
|
11c75b6557ce98f4855c76aa0d7740df71e704d05fda8435d92f89aee4a5623e server/providers/openapi/README.md
|
|
186
186
|
9e4dd35d653c9363b7c7679b38ca3f653b53a359065507046bce94db5dfe4bd5 server/providers/openapi/__init__.py
|
|
187
187
|
3eedd623727b69f35c701c7f20e5ea499eee0ed43353310a33425cb32ff04798 server/providers/openapi/components.py
|
|
@@ -191,13 +191,13 @@ b00f94d08ce939d3aca4fb4e9d77d34633570e505640bd7c0a3a4cfb27030b05 server/provide
|
|
|
191
191
|
59455808dce7fb5c90fa043ca0a1cbe7d911658f79efe92771dcc1b1109c3789 server/providers/prefab_synthesis.py
|
|
192
192
|
9a73913afb1857025d489d1e7c3521058248c67ad7fa4835bf185db0f855dc46 server/providers/proxy.py
|
|
193
193
|
6bb7641e4c222ff359a38f9617987cc64a8c3eaf04118346b1e96f8b336bc9da server/providers/skills/__init__.py
|
|
194
|
-
|
|
194
|
+
8845d0ceb5a62372ea24f338522998282552941c29801810448444edf85b513d server/providers/skills/_common.py
|
|
195
195
|
ce1a7b8a0adece4168f039721d3c0d196da79ae6d8d2b7835ef13733f6c510ab server/providers/skills/claude_provider.py
|
|
196
196
|
571e579ffa410d5a932dc7afeeb76717171ac927450ecd408ca7b2c99e7c5150 server/providers/skills/directory_provider.py
|
|
197
197
|
a427c8444b114edb0a6bf40541dd0a3c53b8adfb59ad292a3eb785711825e145 server/providers/skills/skill_provider.py
|
|
198
198
|
b759c2e9f832ff7b27a9d4347a12851e235d59f7cfa0360aba5efd57377a4adb server/providers/skills/vendor_providers.py
|
|
199
199
|
59802937576af905a862e1768df1677ad07a47288b5cb31b75cca6f1090b6472 server/providers/wrapped_provider.py
|
|
200
|
-
|
|
200
|
+
68d9404589d657563aa8a67211819c6d44ee846991a3f417d08f0f3947392865 server/server.py
|
|
201
201
|
a50d0db0003d63db49a3ec62b18dc75e267d6e03b7165f11f02992316be4e160 server/session_scoped_event_store.py
|
|
202
202
|
a172b6697b515083db1d9f2466d8c88659d37427ece0d292c26d1646c1e72e2f server/sessions.py
|
|
203
203
|
24b63d7adc0e3e7ebb5528924d9cf2e5789faad798bd39175690c8dca0742ac4 server/telemetry.py
|
|
@@ -218,7 +218,7 @@ d66e0f39358b3d410906d0c5fb6b5b09c908ebd2bb8da61130a0a6a89dafa428 settings.py
|
|
|
218
218
|
fd1992e098123e61b8e2697dae56bc3d6311ea118c9dbdbac0197d7ad274b126 tools/__init__.py
|
|
219
219
|
2fceb041133d3d9d38b172f9d87650a6a5c9a856c11a8f0c29c35a682c1a7232 tools/base.py
|
|
220
220
|
d750e73263d2cd1b1fa184476d5256086858e7495ace3f26b32048eaeae39663 tools/function_parsing.py
|
|
221
|
-
|
|
221
|
+
eb1f8951c3695227a91c32a9a3f52f7f68aaa1572b3ec22843b9e199774cdeaf tools/function_tool.py
|
|
222
222
|
9e7fbcfde19d838b70cf25db2cc9ffa757cc69253ff245a3d578b683db3634f5 tools/tool_transform.py
|
|
223
223
|
114f6988d2f7f28911d20afa9792106f76b723e8f4f8c09625e2310b7db438a3 types.py
|
|
224
224
|
fa2989f12fab5e66d73167836a695d3fe7470ea00f83fc3098f573f8b357d781 utilities/__init__.py
|
|
@@ -249,20 +249,20 @@ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 utilities/mcp_
|
|
|
249
249
|
99526bda0a6c8523eecb550bed72a03f815e379bca1ecaa870122a5af8e9a0ad utilities/mime.py
|
|
250
250
|
6890003fe8e02d81f2c1fe4ed7866e50ebfff06b699d7308724ceaa9f413f701 utilities/openapi/README.md
|
|
251
251
|
c833f7723b65b8bf55695ab67261860ce5b21532dc6d6a3c6e887cc12e35ab83 utilities/openapi/__init__.py
|
|
252
|
-
|
|
252
|
+
3015f816ee852d420df12d380d8b558d6e1635c12f110a210d144ce04a1b1f22 utilities/openapi/director.py
|
|
253
253
|
9eb89249d9644ba337379bbbc8140060ea6a5b642be1961d7cb214eed0cca404 utilities/openapi/formatters.py
|
|
254
254
|
8521f1f6091a8cef4154db5342c017fafaf48876869153380b86f7eb741ffa8b utilities/openapi/json_schema_converter.py
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
255
|
+
6d833c04a3bc731a66258221e5f15826a41e265e9c80898218ae226e29f4d612 utilities/openapi/models.py
|
|
256
|
+
2e58bc03dd82687ef7a843474eb65c1f644eafe2c039eb0949a61cce8b313de9 utilities/openapi/parser.py
|
|
257
|
+
1db004cc712839ebdb920e7017776c743e8cd3a3e999b7fe13132d68da4a099c utilities/openapi/schemas.py
|
|
258
|
+
9db69a1b408230d652ec39d89867449d504491aeda59fbc7285a14210575b7e3 utilities/pagination.py
|
|
259
259
|
634850f693e36fc0e5c877581bdb7e990bfd7541676288170c6a1d1713755d46 utilities/prefab.py
|
|
260
260
|
3db58fb4f30afb73083baeb8d94c9a23d9875980f091c19592b9eff89588764c utilities/skills.py
|
|
261
261
|
66a0085646c22d1ff49b89cb218813e5b88eebf12f868423a1eab4f1a0389b98 utilities/tasks.py
|
|
262
262
|
63e6d25c67609e194c5e940602ccf0562ac1617ab33e6f5b5b05a55bfca9c31c utilities/tests.py
|
|
263
263
|
6e158212fb4a31e14b309c7c65aefee8861ac62f8edb2ee06ba359e37df92c37 utilities/timeout.py
|
|
264
264
|
0b105f303612c242d5be4569b185a3e9780b9749f693ba5392ebad223b5aa0d6 utilities/token_cache.py
|
|
265
|
-
|
|
265
|
+
a1ac7acb1d21720d6e2dc9094558d3ada8a50f8580154c2bf102154c62a29d5f utilities/types.py
|
|
266
266
|
81c9e16bb563e31101c5dad2f3711994aa4dff8dc0433720899144be44eacea8 utilities/ui.py
|
|
267
267
|
3ec3a6eeda40bce166793f27a109c8f132b29b4125f781cfc2de220c22568b6a utilities/version_check.py
|
|
268
|
-
|
|
268
|
+
5e19b700a340ef7fd8974571de2aa190ef1acfc609547aaa1729704bfc241ae2 utilities/versions.py
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
fastmcp-slim==4.0.
|
|
1
|
+
fastmcp-slim==4.0.5
|
|
2
2
|
Vendored by scripts/vendor_fastmcp.py — do not edit by hand.
|
|
@@ -96,7 +96,7 @@ class ClientPromptsMixin:
|
|
|
96
96
|
for _ in range(max_pages):
|
|
97
97
|
result = await self.list_prompts_mcp(cursor=cursor)
|
|
98
98
|
all_prompts.extend(result.prompts)
|
|
99
|
-
if
|
|
99
|
+
if result.next_cursor is None:
|
|
100
100
|
break
|
|
101
101
|
if result.next_cursor in seen_cursors:
|
|
102
102
|
logger.warning(
|
|
@@ -96,7 +96,7 @@ class ClientResourcesMixin:
|
|
|
96
96
|
for _ in range(max_pages):
|
|
97
97
|
result = await self.list_resources_mcp(cursor=cursor)
|
|
98
98
|
all_resources.extend(result.resources)
|
|
99
|
-
if
|
|
99
|
+
if result.next_cursor is None:
|
|
100
100
|
break
|
|
101
101
|
if result.next_cursor in seen_cursors:
|
|
102
102
|
logger.warning(
|
|
@@ -191,7 +191,7 @@ class ClientResourcesMixin:
|
|
|
191
191
|
for _ in range(max_pages):
|
|
192
192
|
result = await self.list_resource_templates_mcp(cursor=cursor)
|
|
193
193
|
all_templates.extend(result.resource_templates)
|
|
194
|
-
if
|
|
194
|
+
if result.next_cursor is None:
|
|
195
195
|
break
|
|
196
196
|
if result.next_cursor in seen_cursors:
|
|
197
197
|
logger.warning(
|
|
@@ -121,7 +121,7 @@ class ClientToolsMixin:
|
|
|
121
121
|
for _ in range(max_pages):
|
|
122
122
|
result = await self.list_tools_mcp(cursor=cursor, cache_mode=cache_mode)
|
|
123
123
|
all_tools.extend(result.tools)
|
|
124
|
-
if
|
|
124
|
+
if result.next_cursor is None:
|
|
125
125
|
break
|
|
126
126
|
if result.next_cursor in seen_cursors:
|
|
127
127
|
logger.warning(
|
|
@@ -135,7 +135,7 @@ class AnthropicSamplingHandler:
|
|
|
135
135
|
if params.system_prompt is not None:
|
|
136
136
|
kwargs["system"] = params.system_prompt
|
|
137
137
|
if params.temperature is not None:
|
|
138
|
-
kwargs["
|
|
138
|
+
kwargs["extra_body"] = {"temperature": params.temperature}
|
|
139
139
|
if params.stop_sequences is not None:
|
|
140
140
|
kwargs["stop_sequences"] = params.stop_sequences
|
|
141
141
|
if anthropic_tools is not None:
|
|
@@ -108,8 +108,8 @@ _DEFAULT_LIMITS: "ResourceLimits" = {
|
|
|
108
108
|
"max_memory": 100_000_000, # 100 MB
|
|
109
109
|
}
|
|
110
110
|
"""Baseline limits applied when ``MontySandboxProvider`` is constructed
|
|
111
|
-
without an explicit ``limits`` argument. Pass ``limits=None`` to
|
|
112
|
-
|
|
111
|
+
without an explicit ``limits`` argument. Pass ``limits=None`` to disable
|
|
112
|
+
configurable time, memory, and GC limits, or a dict to override."""
|
|
113
113
|
|
|
114
114
|
|
|
115
115
|
class MontySandboxProvider:
|
|
@@ -117,16 +117,19 @@ class MontySandboxProvider:
|
|
|
117
117
|
|
|
118
118
|
Args:
|
|
119
119
|
limits: Resource limits for sandbox execution. Supported keys:
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
120
|
+
`max_duration_secs` (float), `max_memory` (int),
|
|
121
|
+
`max_recursion_depth` (int), and `gc_interval` (int).
|
|
122
|
+
Time, memory, and GC limits are optional; omit a key to disable
|
|
123
|
+
it. Recursion depth defaults to Monty's standard maximum of 1,000.
|
|
124
|
+
Unsupported keys raise `ValueError` rather than being silently
|
|
125
|
+
ignored.
|
|
124
126
|
|
|
125
127
|
When the argument is omitted entirely, a conservative baseline
|
|
126
128
|
is applied (``max_duration_secs=30``, ``max_memory=100 MB``) so
|
|
127
129
|
the out-of-box configuration is not unbounded. Pass
|
|
128
|
-
``limits=None`` to
|
|
129
|
-
to set your own.
|
|
130
|
+
``limits=None`` to disable configurable time, memory, and GC
|
|
131
|
+
limits, or a dict to set your own. Monty's standard recursion
|
|
132
|
+
limit still applies.
|
|
130
133
|
"""
|
|
131
134
|
|
|
132
135
|
def __init__(
|
|
@@ -156,6 +159,17 @@ class MontySandboxProvider:
|
|
|
156
159
|
"Install it with `fastmcp[code-mode]` or pass a custom SandboxProvider."
|
|
157
160
|
) from exc
|
|
158
161
|
|
|
162
|
+
if self.limits is not None:
|
|
163
|
+
supported_limits = pydantic_monty.ResourceLimits.__annotations__.keys()
|
|
164
|
+
unsupported_limits = self.limits.keys() - supported_limits
|
|
165
|
+
if unsupported_limits:
|
|
166
|
+
unsupported = ", ".join(repr(key) for key in sorted(unsupported_limits))
|
|
167
|
+
supported = ", ".join(sorted(supported_limits))
|
|
168
|
+
raise ValueError(
|
|
169
|
+
f"Unsupported Monty resource limits: {unsupported}. "
|
|
170
|
+
f"Supported limits: {supported}."
|
|
171
|
+
)
|
|
172
|
+
|
|
159
173
|
# Monty currently leaves Python callbacks running when a sandbox exits:
|
|
160
174
|
# https://github.com/pydantic/monty/issues/821
|
|
161
175
|
# Keep their tasks alive and join them before leaving this execution.
|
|
@@ -184,10 +198,10 @@ class MontySandboxProvider:
|
|
|
184
198
|
key: track(value) for key, value in (external_functions or {}).items()
|
|
185
199
|
}
|
|
186
200
|
|
|
187
|
-
monty = pydantic_monty.Monty(code, inputs=list(inputs))
|
|
188
201
|
future = asyncio.ensure_future(
|
|
189
202
|
self._run_monty(
|
|
190
|
-
|
|
203
|
+
pydantic_monty,
|
|
204
|
+
code=code,
|
|
191
205
|
inputs=inputs or None,
|
|
192
206
|
external_functions=async_functions or None,
|
|
193
207
|
)
|
|
@@ -195,10 +209,10 @@ class MontySandboxProvider:
|
|
|
195
209
|
try:
|
|
196
210
|
return await future
|
|
197
211
|
except asyncio.CancelledError:
|
|
198
|
-
# Awaiting alone does not stop the
|
|
212
|
+
# Awaiting alone does not stop the sandbox worker when the
|
|
199
213
|
# surrounding task is cancelled (e.g. an HTTP client disconnects
|
|
200
214
|
# mid-execution). Explicitly cancel so the Monty runtime tears the
|
|
201
|
-
#
|
|
215
|
+
# worker down instead of leaving it running to completion.
|
|
202
216
|
future.cancel()
|
|
203
217
|
raise
|
|
204
218
|
finally:
|
|
@@ -210,23 +224,28 @@ class MontySandboxProvider:
|
|
|
210
224
|
with anyio.CancelScope(shield=True):
|
|
211
225
|
await asyncio.gather(*tasks, return_exceptions=True)
|
|
212
226
|
|
|
213
|
-
def _run_monty(
|
|
227
|
+
async def _run_monty(
|
|
214
228
|
self,
|
|
215
|
-
|
|
229
|
+
pydantic_monty: Any,
|
|
216
230
|
*,
|
|
231
|
+
code: str,
|
|
217
232
|
inputs: dict[str, Any] | None,
|
|
218
233
|
external_functions: dict[str, Callable[..., Any]] | None,
|
|
219
234
|
) -> Any:
|
|
220
|
-
"""
|
|
235
|
+
"""Run code in an isolated sandbox session.
|
|
221
236
|
|
|
222
237
|
Isolated so the cancellation handling in `run()` can be exercised
|
|
223
238
|
without a live `pydantic-monty` runtime.
|
|
224
239
|
"""
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
240
|
+
async with (
|
|
241
|
+
pydantic_monty.AsyncMonty() as pool,
|
|
242
|
+
pool.checkout(limits=self.limits) as session,
|
|
243
|
+
):
|
|
244
|
+
return await session.feed_run(
|
|
245
|
+
code,
|
|
246
|
+
inputs=inputs,
|
|
247
|
+
external_lookup=external_functions,
|
|
248
|
+
)
|
|
230
249
|
|
|
231
250
|
|
|
232
251
|
# ---------------------------------------------------------------------------
|
|
@@ -1313,6 +1313,15 @@ class OAuthProxy(OAuthProvider, ConsentMixin):
|
|
|
1313
1313
|
# Get stored upstream tokens
|
|
1314
1314
|
idp_tokens = code_model.idp_tokens
|
|
1315
1315
|
|
|
1316
|
+
# A non-positive lifetime means the upstream access token is already
|
|
1317
|
+
# unusable. Reject it as an OAuth error before consuming our one-time
|
|
1318
|
+
# authorization code instead of passing an invalid TTL to storage.
|
|
1319
|
+
if "expires_in" in idp_tokens and int(idp_tokens["expires_in"]) <= 0:
|
|
1320
|
+
raise TokenError(
|
|
1321
|
+
"invalid_grant",
|
|
1322
|
+
"Upstream access token has a non-positive expires_in",
|
|
1323
|
+
)
|
|
1324
|
+
|
|
1316
1325
|
# Use IdP-granted scopes when available (RFC 6749 §5.1: the IdP MUST
|
|
1317
1326
|
# include a scope parameter when the granted scope differs from the
|
|
1318
1327
|
# requested scope). Fall back to requested scopes only when the IdP
|
|
@@ -1820,6 +1829,14 @@ class OAuthProxy(OAuthProvider, ConsentMixin):
|
|
|
1820
1829
|
logger.error("Upstream token refresh failed: %s", e)
|
|
1821
1830
|
raise TokenError("invalid_grant", f"Upstream refresh failed: {e}") from e
|
|
1822
1831
|
|
|
1832
|
+
# A refresh response with a non-positive lifetime is equally unusable.
|
|
1833
|
+
# Reject it before mutating stored upstream state or rotating JTI mappings.
|
|
1834
|
+
if "expires_in" in token_response and int(token_response["expires_in"]) <= 0:
|
|
1835
|
+
raise TokenError(
|
|
1836
|
+
"invalid_grant",
|
|
1837
|
+
"Upstream access token has a non-positive expires_in",
|
|
1838
|
+
)
|
|
1839
|
+
|
|
1823
1840
|
# Update stored upstream token
|
|
1824
1841
|
# In refresh flow, we know there's a refresh token, so default to 1 hour
|
|
1825
1842
|
# (user override still applies if set)
|
|
@@ -2157,6 +2174,12 @@ class OAuthProxy(OAuthProvider, ConsentMixin):
|
|
|
2157
2174
|
# swap for. Return directly from the verified claims, unless the
|
|
2158
2175
|
# token was revoked (tracked by jti until natural expiry).
|
|
2159
2176
|
if payload.get("fastmcp_grant") == _ID_JAG_GRANT_MARKER:
|
|
2177
|
+
if self._identity_assertion is None:
|
|
2178
|
+
logger.warning(
|
|
2179
|
+
"Rejected ID-JAG token: identity assertion is not configured (jti=%s)",
|
|
2180
|
+
jti[:16],
|
|
2181
|
+
)
|
|
2182
|
+
return None
|
|
2160
2183
|
if jti in self._revoked_id_jag_jtis:
|
|
2161
2184
|
logger.info("Rejected revoked ID-JAG access token jti=%s", jti[:16])
|
|
2162
2185
|
return None
|
{ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py
RENAMED
|
@@ -44,9 +44,9 @@ To compose with existing `@asynccontextmanager` lifespans, wrap them explicitly:
|
|
|
44
44
|
|
|
45
45
|
from __future__ import annotations
|
|
46
46
|
|
|
47
|
-
from collections.abc import AsyncIterator, Callable
|
|
47
|
+
from collections.abc import AsyncGenerator, AsyncIterator, Callable
|
|
48
48
|
from contextlib import AbstractAsyncContextManager, asynccontextmanager
|
|
49
|
-
from typing import TYPE_CHECKING, Any
|
|
49
|
+
from typing import TYPE_CHECKING, Any, cast
|
|
50
50
|
|
|
51
51
|
if TYPE_CHECKING:
|
|
52
52
|
from ha_mcp._vendor.fastmcp.server.server import FastMCP
|
|
@@ -84,7 +84,11 @@ class Lifespan:
|
|
|
84
84
|
Yields:
|
|
85
85
|
The lifespan context dict.
|
|
86
86
|
"""
|
|
87
|
-
|
|
87
|
+
generator_fn = cast(
|
|
88
|
+
Callable[["FastMCP[Any]"], AsyncGenerator[dict[str, Any] | None]],
|
|
89
|
+
self._fn,
|
|
90
|
+
)
|
|
91
|
+
async with asynccontextmanager(generator_fn)(server) as result:
|
|
88
92
|
yield result if result is not None else {}
|
|
89
93
|
|
|
90
94
|
def __or__(self, other: Lifespan) -> ComposedLifespan:
|
|
@@ -453,7 +453,31 @@ class LocalProvider(
|
|
|
453
453
|
This includes both FunctionTool/Resource/Prompt instances created via
|
|
454
454
|
decorators and custom Tool/Resource/Prompt subclasses.
|
|
455
455
|
"""
|
|
456
|
-
|
|
456
|
+
components = list(self._components.values())
|
|
457
|
+
|
|
458
|
+
# Separate by component type for transform application
|
|
459
|
+
tools = [c for c in components if isinstance(c, Tool)]
|
|
460
|
+
resources = [c for c in components if isinstance(c, Resource)]
|
|
461
|
+
templates = [c for c in components if isinstance(c, ResourceTemplate)]
|
|
462
|
+
prompts = [c for c in components if isinstance(c, Prompt)]
|
|
463
|
+
|
|
464
|
+
# Apply this provider's transforms sequentially
|
|
465
|
+
for transform in self.transforms:
|
|
466
|
+
tools = await transform.list_tools(tools)
|
|
467
|
+
resources = await transform.list_resources(resources)
|
|
468
|
+
templates = await transform.list_resource_templates(templates)
|
|
469
|
+
prompts = await transform.list_prompts(prompts)
|
|
470
|
+
|
|
471
|
+
return [
|
|
472
|
+
c
|
|
473
|
+
for c in [
|
|
474
|
+
*tools,
|
|
475
|
+
*resources,
|
|
476
|
+
*templates,
|
|
477
|
+
*prompts,
|
|
478
|
+
]
|
|
479
|
+
if c.task_config.supports_tasks()
|
|
480
|
+
]
|
|
457
481
|
|
|
458
482
|
# =========================================================================
|
|
459
483
|
# Decorator methods
|
|
@@ -8,6 +8,8 @@ from dataclasses import dataclass, field
|
|
|
8
8
|
from pathlib import Path
|
|
9
9
|
from typing import Any
|
|
10
10
|
|
|
11
|
+
import yaml
|
|
12
|
+
|
|
11
13
|
|
|
12
14
|
@dataclass
|
|
13
15
|
class SkillFileInfo:
|
|
@@ -30,14 +32,61 @@ class SkillInfo:
|
|
|
30
32
|
frontmatter: dict[str, Any] = field(default_factory=dict)
|
|
31
33
|
|
|
32
34
|
|
|
35
|
+
def _parse_frontmatter_line_based(frontmatter_text: str) -> dict[str, Any]:
|
|
36
|
+
"""Legacy line-based frontmatter parser (key: value only).
|
|
37
|
+
|
|
38
|
+
Used as a fallback when full YAML parsing fails so plain scalar keys
|
|
39
|
+
(including values that contain `: `) are not discarded entirely.
|
|
40
|
+
Multiline YAML block scalars (`|` / `>`) are not supported here —
|
|
41
|
+
those require a successful `yaml.safe_load`.
|
|
42
|
+
"""
|
|
43
|
+
frontmatter: dict[str, Any] = {}
|
|
44
|
+
for line in frontmatter_text.strip().split("\n"):
|
|
45
|
+
if ":" not in line:
|
|
46
|
+
continue
|
|
47
|
+
key, _, value = line.partition(":")
|
|
48
|
+
key = key.strip()
|
|
49
|
+
value = value.strip()
|
|
50
|
+
|
|
51
|
+
# Handle quoted strings
|
|
52
|
+
if (value.startswith('"') and value.endswith('"')) or (
|
|
53
|
+
value.startswith("'") and value.endswith("'")
|
|
54
|
+
):
|
|
55
|
+
value = value[1:-1]
|
|
56
|
+
|
|
57
|
+
# Handle lists [a, b, c]
|
|
58
|
+
if value.startswith("[") and value.endswith("]"):
|
|
59
|
+
items = value[1:-1].split(",")
|
|
60
|
+
value = [item.strip().strip("\"'") for item in items if item.strip()]
|
|
61
|
+
|
|
62
|
+
frontmatter[key] = value
|
|
63
|
+
return frontmatter
|
|
64
|
+
|
|
65
|
+
|
|
33
66
|
def parse_frontmatter(content: str) -> tuple[dict[str, Any], str]:
|
|
34
67
|
"""Parse YAML frontmatter from markdown content.
|
|
35
68
|
|
|
69
|
+
Uses `yaml.BaseLoader` so multiline block scalars (`|` / `>`) work while
|
|
70
|
+
every scalar value is returned as a plain string. `SkillInfo.frontmatter`
|
|
71
|
+
is a public mapping; letting a full loader (e.g. `safe_load`) apply
|
|
72
|
+
implicit scalar typing would silently turn `version: 1.10` into the float
|
|
73
|
+
`1.1`, `enabled: yes` into `True`, or a date-like value into
|
|
74
|
+
`datetime.date` for every skill author, which is a backwards-incompatible
|
|
75
|
+
surprise rather than an internal detail. `BaseLoader` has no such
|
|
76
|
+
constructors, so values round-trip as written. If YAML parsing fails
|
|
77
|
+
(invalid YAML, recursion limit, etc.), falls back to a line-based
|
|
78
|
+
key:value parser so plain frontmatter is not discarded.
|
|
79
|
+
|
|
36
80
|
Args:
|
|
37
81
|
content: Markdown content potentially starting with ---
|
|
38
82
|
|
|
39
83
|
Returns:
|
|
40
|
-
Tuple of (frontmatter dict, remaining content)
|
|
84
|
+
Tuple of (frontmatter dict, remaining content). If no frontmatter
|
|
85
|
+
block is found at all (no opening/closing `---` delimiters),
|
|
86
|
+
returns `({}, content)` unchanged. If a delimited block is found
|
|
87
|
+
but is empty or does not parse to a YAML mapping (and the line-based
|
|
88
|
+
fallback also yields nothing), returns `({}, remaining)` with the
|
|
89
|
+
delimited block stripped.
|
|
41
90
|
"""
|
|
42
91
|
content = content.removeprefix("\ufeff")
|
|
43
92
|
|
|
@@ -52,28 +101,16 @@ def parse_frontmatter(content: str) -> tuple[dict[str, Any], str]:
|
|
|
52
101
|
frontmatter_text = content[3 : 3 + end_match.start()]
|
|
53
102
|
remaining = content[3 + end_match.end() :]
|
|
54
103
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
key = key.strip()
|
|
61
|
-
value = value.strip()
|
|
62
|
-
|
|
63
|
-
# Handle quoted strings
|
|
64
|
-
if (value.startswith('"') and value.endswith('"')) or (
|
|
65
|
-
value.startswith("'") and value.endswith("'")
|
|
66
|
-
):
|
|
67
|
-
value = value[1:-1]
|
|
68
|
-
|
|
69
|
-
# Handle lists [a, b, c]
|
|
70
|
-
if value.startswith("[") and value.endswith("]"):
|
|
71
|
-
items = value[1:-1].split(",")
|
|
72
|
-
value = [item.strip().strip("\"'") for item in items if item.strip()]
|
|
104
|
+
try:
|
|
105
|
+
parsed = yaml.load(frontmatter_text, Loader=yaml.BaseLoader)
|
|
106
|
+
except (yaml.YAMLError, RecursionError):
|
|
107
|
+
# Prefer partial recovery over discarding every key (issue #4416 review).
|
|
108
|
+
return _parse_frontmatter_line_based(frontmatter_text), remaining
|
|
73
109
|
|
|
74
|
-
|
|
110
|
+
if not isinstance(parsed, dict):
|
|
111
|
+
return {}, remaining
|
|
75
112
|
|
|
76
|
-
return
|
|
113
|
+
return parsed, remaining
|
|
77
114
|
|
|
78
115
|
|
|
79
116
|
def compute_file_hash(path: Path) -> str:
|
{ha_mcp_dev-8.5.0.dev2799 → ha_mcp_dev-8.5.0.dev2801}/src/ha_mcp/_vendor/fastmcp/server/server.py
RENAMED
|
@@ -16,7 +16,16 @@ from contextlib import (
|
|
|
16
16
|
)
|
|
17
17
|
from functools import partial
|
|
18
18
|
from pathlib import Path
|
|
19
|
-
from typing import
|
|
19
|
+
from typing import (
|
|
20
|
+
TYPE_CHECKING,
|
|
21
|
+
Any,
|
|
22
|
+
Generic,
|
|
23
|
+
Literal,
|
|
24
|
+
TypeVar,
|
|
25
|
+
cast,
|
|
26
|
+
get_args,
|
|
27
|
+
overload,
|
|
28
|
+
)
|
|
20
29
|
|
|
21
30
|
import httpx2
|
|
22
31
|
from ha_mcp._vendor import mcp_types
|
|
@@ -31,6 +40,7 @@ from ha_mcp._vendor.mcp_types import (
|
|
|
31
40
|
from ha_mcp._vendor.mcp_types.jsonrpc import MISSING_REQUIRED_CLIENT_CAPABILITY
|
|
32
41
|
from pydantic import AnyUrl
|
|
33
42
|
from pydantic import ValidationError as PydanticValidationError
|
|
43
|
+
from pydantic_core import ErrorType
|
|
34
44
|
from starlette.routing import BaseRoute
|
|
35
45
|
from typing_extensions import Self
|
|
36
46
|
|
|
@@ -112,6 +122,21 @@ if TYPE_CHECKING:
|
|
|
112
122
|
|
|
113
123
|
logger = get_logger(__name__.removeprefix("ha_mcp._vendor."))
|
|
114
124
|
|
|
125
|
+
_BUILTIN_VALIDATION_ERROR_TYPES = frozenset(get_args(ErrorType))
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def _validation_error_summary(error: PydanticValidationError) -> dict[str, Any]:
|
|
129
|
+
"""Keep counts and built-in codes, never input-derived validation details."""
|
|
130
|
+
error_types = {
|
|
131
|
+
detail["type"]
|
|
132
|
+
if detail["type"] in _BUILTIN_VALIDATION_ERROR_TYPES
|
|
133
|
+
else "custom_error"
|
|
134
|
+
for detail in error.errors(
|
|
135
|
+
include_url=False, include_context=False, include_input=False
|
|
136
|
+
)
|
|
137
|
+
}
|
|
138
|
+
return {"error_count": error.error_count(), "error_types": sorted(error_types)}
|
|
139
|
+
|
|
115
140
|
|
|
116
141
|
def _version_request_meta(
|
|
117
142
|
version: VersionSpec | None,
|
|
@@ -1491,18 +1516,15 @@ class FastMCP(
|
|
|
1491
1516
|
try:
|
|
1492
1517
|
return await tool._run(arguments or {})
|
|
1493
1518
|
except ValidationError as e:
|
|
1494
|
-
# Argument-validation failure (a bad call). FunctionTool
|
|
1495
|
-
# converts pydantic's call-validation error into fastmcp's
|
|
1496
|
-
# ValidationError (see #4128) so it can be filtered as a
|
|
1497
|
-
# client error. Log the underlying detail without a URL or
|
|
1498
|
-
# traceback, matching the previous pydantic-error logging.
|
|
1499
1519
|
cause = e.__cause__
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1520
|
+
if isinstance(cause, PydanticValidationError):
|
|
1521
|
+
logger.warning(
|
|
1522
|
+
"Invalid arguments for tool %r: %s",
|
|
1523
|
+
name,
|
|
1524
|
+
_validation_error_summary(cause),
|
|
1525
|
+
)
|
|
1526
|
+
else:
|
|
1527
|
+
logger.warning("Invalid arguments for tool %r", name)
|
|
1506
1528
|
raise
|
|
1507
1529
|
except FastMCPError as e:
|
|
1508
1530
|
logger.log(
|
|
@@ -1516,7 +1538,7 @@ class FastMCP(
|
|
|
1516
1538
|
logger.warning(
|
|
1517
1539
|
"Invalid arguments for tool %r: %s",
|
|
1518
1540
|
name,
|
|
1519
|
-
e
|
|
1541
|
+
_validation_error_summary(e),
|
|
1520
1542
|
)
|
|
1521
1543
|
raise
|
|
1522
1544
|
except Exception as e:
|