ha-mcp-dev 8.6.0.dev2865__tar.gz → 8.6.0.dev2868__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/PKG-INFO +4 -4
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/README.md +3 -3
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/pyproject.toml +1 -1
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/pyproject.toml.orig +1 -1
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/read_only.py +2 -2
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/server.py +22 -48
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/server_tool_text.py +80 -12
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/en.json +1 -1
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +1 -1
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/backup.py +5 -5
- ha_mcp_dev-8.6.0.dev2868/src/ha_mcp/tools/bug_report_templates.py +958 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_bug_report.py +71 -886
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/transforms/categorized_search.py +72 -3
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/client/admin_routes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/config_backup.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/config_overrides.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/config_registry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/config_settings.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/http_transport.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/decision_pin.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/decisions.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/events.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/mrtr.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/server_channels.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/server_lifespan.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/az.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/blueprint_sources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/coercion.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/create.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/update.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_write_helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/device_enrichment.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/entity_registration.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/entity_update_fields.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/response_helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/scene_discovery.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/component.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/entities.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/legacy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/modes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/overview.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/response.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/state.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/ws_waiters.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/transforms/component_search.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/transforms/write_tool_note.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/dashboard_patch.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/mcp_client_host.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/registry_update_lock.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/visibility/resolver.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ha-mcp-dev
|
|
3
|
-
Version: 8.6.0.
|
|
3
|
+
Version: 8.6.0.dev2868
|
|
4
4
|
Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
|
|
5
5
|
Keywords: mcp,home-assistant,ai,automation,smart-home
|
|
6
6
|
Author: Julien
|
|
@@ -407,7 +407,7 @@ Set ENABLE_TOOL_SEARCH=true (or toggle the option in the HA app). The full catal
|
|
|
407
407
|
|
|
408
408
|
| Tool | Purpose |
|
|
409
409
|
|------|---------|
|
|
410
|
-
| `ha_search_tools` | BM25 keyword search across all tools.
|
|
410
|
+
| `ha_search_tools` | BM25 English-keyword search across all tools, pinned ones included. Hidden tools return name, description, parameters, and annotations (`readOnlyHint` / `destructiveHint`) so the agent can pick the right one; a pinned tool returns a name-only stub (`pinned: true`) pointing back at the tool list, and does not use up a result slot. |
|
|
411
411
|
| `ha_call_read_tool` | Execute a `readOnlyHint` tool by name. Safe — clients can auto-approve. |
|
|
412
412
|
| `ha_call_write_tool` | Execute a write tool that creates or updates data. |
|
|
413
413
|
| `ha_call_delete_tool` | Execute a tool that removes / deletes data. |
|
|
@@ -419,7 +419,7 @@ A `ha_manage_*` tool combines several operations, so it is reachable from more t
|
|
|
419
419
|
| Setting | Default | Description |
|
|
420
420
|
|---------|---------|-------------|
|
|
421
421
|
| `ENABLE_TOOL_SEARCH` | `false` | Replace full tool catalog with search-based discovery (tools deferred behind on-demand search). |
|
|
422
|
-
| `TOOL_SEARCH_MAX_RESULTS` | `5` | Max
|
|
422
|
+
| `TOOL_SEARCH_MAX_RESULTS` | `5` | Max hidden tools returned per `ha_search_tools` call (range 2–10); a pinned tool that ranks inside that top count is added as a name-only stub on top of it. |
|
|
423
423
|
| `PINNED_TOOLS` | empty | Comma-separated tool names to keep always visible. The web settings UI is the primary way to manage this. |
|
|
424
424
|
|
|
425
425
|
### When to enable
|
|
@@ -566,7 +566,7 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
566
566
|
## 💬 Community
|
|
567
567
|
|
|
568
568
|
- **[GitHub Discussions](https://github.com/homeassistant-ai/ha-mcp/discussions)** — Ask questions, share ideas
|
|
569
|
-
- **[Issue Tracker](https://github.com/homeassistant-ai/ha-mcp/issues)** — Report bugs, request features, or suggest tool behavior improvements
|
|
569
|
+
- **[Issue Tracker](https://github.com/homeassistant-ai/ha-mcp/issues)** — Report bugs, request features, or suggest tool behavior improvements. Bug reports need the report the `ha_report_issue` tool generates, or a reason why there is none; without either they are closed after 24 hours.
|
|
570
570
|
|
|
571
571
|
---
|
|
572
572
|
|
|
@@ -347,7 +347,7 @@ Set ENABLE_TOOL_SEARCH=true (or toggle the option in the HA app). The full catal
|
|
|
347
347
|
|
|
348
348
|
| Tool | Purpose |
|
|
349
349
|
|------|---------|
|
|
350
|
-
| `ha_search_tools` | BM25 keyword search across all tools.
|
|
350
|
+
| `ha_search_tools` | BM25 English-keyword search across all tools, pinned ones included. Hidden tools return name, description, parameters, and annotations (`readOnlyHint` / `destructiveHint`) so the agent can pick the right one; a pinned tool returns a name-only stub (`pinned: true`) pointing back at the tool list, and does not use up a result slot. |
|
|
351
351
|
| `ha_call_read_tool` | Execute a `readOnlyHint` tool by name. Safe — clients can auto-approve. |
|
|
352
352
|
| `ha_call_write_tool` | Execute a write tool that creates or updates data. |
|
|
353
353
|
| `ha_call_delete_tool` | Execute a tool that removes / deletes data. |
|
|
@@ -359,7 +359,7 @@ A `ha_manage_*` tool combines several operations, so it is reachable from more t
|
|
|
359
359
|
| Setting | Default | Description |
|
|
360
360
|
|---------|---------|-------------|
|
|
361
361
|
| `ENABLE_TOOL_SEARCH` | `false` | Replace full tool catalog with search-based discovery (tools deferred behind on-demand search). |
|
|
362
|
-
| `TOOL_SEARCH_MAX_RESULTS` | `5` | Max
|
|
362
|
+
| `TOOL_SEARCH_MAX_RESULTS` | `5` | Max hidden tools returned per `ha_search_tools` call (range 2–10); a pinned tool that ranks inside that top count is added as a name-only stub on top of it. |
|
|
363
363
|
| `PINNED_TOOLS` | empty | Comma-separated tool names to keep always visible. The web settings UI is the primary way to manage this. |
|
|
364
364
|
|
|
365
365
|
### When to enable
|
|
@@ -506,7 +506,7 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
506
506
|
## 💬 Community
|
|
507
507
|
|
|
508
508
|
- **[GitHub Discussions](https://github.com/homeassistant-ai/ha-mcp/discussions)** — Ask questions, share ideas
|
|
509
|
-
- **[Issue Tracker](https://github.com/homeassistant-ai/ha-mcp/issues)** — Report bugs, request features, or suggest tool behavior improvements
|
|
509
|
+
- **[Issue Tracker](https://github.com/homeassistant-ai/ha-mcp/issues)** — Report bugs, request features, or suggest tool behavior improvements. Bug reports need the report the `ha_report_issue` tool generates, or a reason why there is none; without either they are closed after 24 hours.
|
|
510
510
|
|
|
511
511
|
---
|
|
512
512
|
|
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "8.6.0.
|
|
7
|
+
version = "8.6.0.dev2868"
|
|
8
8
|
description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13,<3.15"
|
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "8.6.0.
|
|
7
|
+
version = "8.6.0.dev2868"
|
|
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
|
|
@@ -89,7 +89,7 @@ def read_only_remedy_hint() -> str:
|
|
|
89
89
|
if get_global_settings().read_only_mode:
|
|
90
90
|
return (
|
|
91
91
|
"To allow changes, the user must turn off Read Only Mode in the "
|
|
92
|
-
"ha-mcp settings UI (Tools tab) or the add-on configuration."
|
|
92
|
+
"ha-mcp settings UI (Tools tab) or the app (add-on) configuration."
|
|
93
93
|
)
|
|
94
94
|
return "This connection is read-only. If changes are needed, ask the user."
|
|
95
95
|
|
|
@@ -135,7 +135,7 @@ def _addon_write(args: dict[str, Any]) -> str | None:
|
|
|
135
135
|
return f"action={action!r}"
|
|
136
136
|
for param in _ADDON_CONFIG_WRITE_PARAMS:
|
|
137
137
|
if args.get(param) is not None:
|
|
138
|
-
return f"add-on configuration change ({param}=...)"
|
|
138
|
+
return f"app (add-on) configuration change ({param}=...)"
|
|
139
139
|
if args.get("array_patch") is not None:
|
|
140
140
|
return "array_patch modification"
|
|
141
141
|
if args.get("websocket"):
|
|
@@ -23,11 +23,14 @@ from .errors import ErrorCode, create_error_response
|
|
|
23
23
|
from .http_transport import HttpTransportFastMCP as FastMCP
|
|
24
24
|
from .server_lifespan import server_lifespan
|
|
25
25
|
from .server_tool_text import (
|
|
26
|
+
ISSUE_FILING_INSTRUCTIONS,
|
|
26
27
|
LITE_DOCSTRING_DESTINATIONS,
|
|
27
28
|
LITE_DOCSTRINGS,
|
|
29
|
+
READ_ONLY_INSTRUCTIONS,
|
|
28
30
|
SEARCH_KEYWORDS,
|
|
29
31
|
SEARCH_TOOL_DESCRIPTION,
|
|
30
32
|
SKILL_USE_BEFORE_KEYWORDS,
|
|
33
|
+
TOOL_DISCOVERY_INSTRUCTIONS,
|
|
31
34
|
)
|
|
32
35
|
from .tools.helpers import raise_tool_error
|
|
33
36
|
from .transforms import DEFAULT_PINNED_TOOLS
|
|
@@ -128,28 +131,7 @@ class HomeAssistantSmartMCPServer:
|
|
|
128
131
|
server_name = self.settings.mcp_server_name
|
|
129
132
|
server_version = self.settings.mcp_server_version
|
|
130
133
|
|
|
131
|
-
|
|
132
|
-
instructions = self._build_skills_instructions()
|
|
133
|
-
|
|
134
|
-
# Surface Read Only Mode in the startup instructions so clients
|
|
135
|
-
# that show server instructions warn the model up front. Startup
|
|
136
|
-
# state only — live flips are covered by the structured
|
|
137
|
-
# READ_ONLY_MODE call errors and the ha_get_overview field.
|
|
138
|
-
if self.settings.read_only_mode:
|
|
139
|
-
read_only_note = (
|
|
140
|
-
"## Read Only Mode\n"
|
|
141
|
-
"This server is running in Read Only Mode: write-capable "
|
|
142
|
-
"tools are disabled and every write or destructive "
|
|
143
|
-
"operation is blocked with a READ_ONLY_MODE error. You can "
|
|
144
|
-
"search, read, and analyze freely. To allow changes, the "
|
|
145
|
-
"user must turn off Read Only Mode in the ha-mcp settings "
|
|
146
|
-
"UI (Tools tab) or the add-on configuration."
|
|
147
|
-
)
|
|
148
|
-
instructions = (
|
|
149
|
-
f"{instructions}\n\n{read_only_note}"
|
|
150
|
-
if instructions
|
|
151
|
-
else read_only_note
|
|
152
|
-
)
|
|
134
|
+
instructions = self._build_instructions()
|
|
153
135
|
|
|
154
136
|
# Create FastMCP server with Home Assistant icons for client UI display
|
|
155
137
|
self.mcp = FastMCP(
|
|
@@ -380,6 +362,22 @@ class HomeAssistantSmartMCPServer:
|
|
|
380
362
|
logger.debug("skill-tool visibility lookup failed", exc_info=True)
|
|
381
363
|
return False
|
|
382
364
|
|
|
365
|
+
def _build_instructions(self) -> str:
|
|
366
|
+
"""Compose the server instructions sent in the MCP initialize response."""
|
|
367
|
+
sections: list[str] = []
|
|
368
|
+
skills = self._build_skills_instructions()
|
|
369
|
+
if skills:
|
|
370
|
+
sections.append(skills)
|
|
371
|
+
|
|
372
|
+
# Surface Read Only Mode in the startup instructions so clients
|
|
373
|
+
# that show server instructions warn the model up front. Startup
|
|
374
|
+
# state only — live flips are covered by the structured
|
|
375
|
+
# READ_ONLY_MODE call errors and the ha_get_overview field.
|
|
376
|
+
if self.settings.read_only_mode:
|
|
377
|
+
sections.append(READ_ONLY_INSTRUCTIONS)
|
|
378
|
+
sections.append(ISSUE_FILING_INSTRUCTIONS)
|
|
379
|
+
return "\n\n".join(sections)
|
|
380
|
+
|
|
383
381
|
def _build_skills_instructions(self) -> str | None:
|
|
384
382
|
"""Build server instructions from bundled skill frontmatter.
|
|
385
383
|
|
|
@@ -456,32 +454,8 @@ class HomeAssistantSmartMCPServer:
|
|
|
456
454
|
|
|
457
455
|
# Append tool search instructions when enabled
|
|
458
456
|
if self.settings.enable_tool_search:
|
|
459
|
-
instructions += (
|
|
460
|
-
"
|
|
461
|
-
"This server uses search-based tool discovery. Most tools "
|
|
462
|
-
"are NOT listed directly \u2014 use ha_search_tools to find them.\n\n"
|
|
463
|
-
"WORKFLOW:\n"
|
|
464
|
-
'1. Call ha_search_tools(query="...") to find relevant tools\n'
|
|
465
|
-
"2. Results include name, description, parameters, and "
|
|
466
|
-
"annotations (readOnlyHint/destructiveHint)\n"
|
|
467
|
-
"3. Execute the discovered tool \u2014 two options:\n"
|
|
468
|
-
" a) DIRECT CALL (preferred): Call the tool directly by "
|
|
469
|
-
"name. All discovered tools are callable without a proxy.\n"
|
|
470
|
-
" b) VIA PROXY: For permission-gated execution, use the "
|
|
471
|
-
"matching proxy:\n"
|
|
472
|
-
" - ha_call_read_tool \u2014 safe, read-only operations\n"
|
|
473
|
-
" - ha_call_write_tool \u2014 creates or modifies data\n"
|
|
474
|
-
" - ha_call_delete_tool \u2014 removes data permanently\n\n"
|
|
475
|
-
"Once you know a tool\u2019s name, you do NOT need to search "
|
|
476
|
-
"again \u2014 call it directly.\n\n"
|
|
477
|
-
f"A few default tools are listed directly "
|
|
478
|
-
f"({', '.join(DEFAULT_PINNED_TOOLS)}) — these are the "
|
|
479
|
-
f"starting pins, and users can unpin the non-mandatory "
|
|
480
|
-
f"ones via the Tools tab in the settings UI, so the "
|
|
481
|
-
f"actual visible set may be a subset of this list. "
|
|
482
|
-
f"Everything else must be discovered via search.\n\n"
|
|
483
|
-
"DO NOT assume a capability is unavailable because you "
|
|
484
|
-
"don't see a direct tool for it. ALWAYS search first."
|
|
457
|
+
instructions += TOOL_DISCOVERY_INSTRUCTIONS.format(
|
|
458
|
+
pinned=", ".join(DEFAULT_PINNED_TOOLS)
|
|
485
459
|
)
|
|
486
460
|
|
|
487
461
|
return instructions
|
|
@@ -9,12 +9,15 @@ from __future__ import annotations
|
|
|
9
9
|
|
|
10
10
|
# Description for the unified search tool
|
|
11
11
|
SEARCH_TOOL_DESCRIPTION = (
|
|
12
|
-
"Search ALL Home Assistant tools by keyword. Returns matching
|
|
13
|
-
"with descriptions, parameters, and annotations
|
|
14
|
-
"Categories: entities, states, automations,
|
|
15
|
-
"helpers, HACS, calendar, zones, labels, groups,
|
|
16
|
-
"history, statistics, devices, integrations, services,
|
|
17
|
-
"todo, camera, blueprints, system, and more.\n\n"
|
|
12
|
+
"Search ALL Home Assistant tools by ENGLISH keyword. Returns matching "
|
|
13
|
+
"tools with descriptions, parameters, and annotations "
|
|
14
|
+
"(read/write/delete). Categories: entities, states, automations, "
|
|
15
|
+
"scripts, dashboards, helpers, HACS, calendar, zones, labels, groups, "
|
|
16
|
+
"areas, floors, history, statistics, devices, integrations, services, "
|
|
17
|
+
"backups, todo, camera, blueprints, system, and more.\n\n"
|
|
18
|
+
"Tools already in your tool list are callable directly \u2014 no search "
|
|
19
|
+
"needed. If one matches a search, it comes back as a name-only stub "
|
|
20
|
+
"(pinned: true); use the schema you already have.\n\n"
|
|
18
21
|
"WORKFLOW:\n"
|
|
19
22
|
"1. ha_search_tools(query='...') \u2014 find tools (this tool)\n"
|
|
20
23
|
"2. Execute: call the tool DIRECTLY by name (preferred), or use "
|
|
@@ -32,6 +35,42 @@ SEARCH_TOOL_DESCRIPTION = (
|
|
|
32
35
|
"Most tools are discoverable only through this search."
|
|
33
36
|
)
|
|
34
37
|
|
|
38
|
+
# Appended to the server instructions when tool search is on; ``{pinned}``
|
|
39
|
+
# is the comma-joined DEFAULT_PINNED_TOOLS.
|
|
40
|
+
TOOL_DISCOVERY_INSTRUCTIONS = (
|
|
41
|
+
"\n\n## Tool Discovery\n"
|
|
42
|
+
"Tools already in your tool list are callable directly — "
|
|
43
|
+
"do not search for them. Once you know any tool’s name, "
|
|
44
|
+
"call it directly; never search for the same tool twice.\n\n"
|
|
45
|
+
"Most other tools are NOT listed directly — use "
|
|
46
|
+
"ha_search_tools to find them.\n\n"
|
|
47
|
+
"WORKFLOW:\n"
|
|
48
|
+
'1. Call ha_search_tools(query="...") with ENGLISH keywords '
|
|
49
|
+
"naming the operation (e.g. 'get entity state'). Translate "
|
|
50
|
+
"other languages first; entity, area and device names keep "
|
|
51
|
+
"their original spelling.\n"
|
|
52
|
+
"2. Results include name, description, parameters, and "
|
|
53
|
+
"annotations (readOnlyHint/destructiveHint). A tool already "
|
|
54
|
+
"in your list comes back as a name-only stub (pinned: true) "
|
|
55
|
+
"— use the schema you already have.\n"
|
|
56
|
+
"3. Execute the discovered tool — two options:\n"
|
|
57
|
+
" a) DIRECT CALL (preferred): Call the tool directly by "
|
|
58
|
+
"name. All discovered tools are callable without a proxy.\n"
|
|
59
|
+
" b) VIA PROXY: For permission-gated execution, use the "
|
|
60
|
+
"matching proxy:\n"
|
|
61
|
+
" - ha_call_read_tool — safe, read-only operations\n"
|
|
62
|
+
" - ha_call_write_tool — creates or modifies data\n"
|
|
63
|
+
" - ha_call_delete_tool — removes data permanently\n\n"
|
|
64
|
+
"A few default tools are listed directly "
|
|
65
|
+
"({pinned}) — these are the "
|
|
66
|
+
"starting pins, and users can unpin the non-mandatory "
|
|
67
|
+
"ones via the Tools tab in the settings UI, so the "
|
|
68
|
+
"actual visible set may be a subset of this list. "
|
|
69
|
+
"Everything else must be discovered via search.\n\n"
|
|
70
|
+
"DO NOT assume a capability is unavailable because you "
|
|
71
|
+
"don't see a direct tool for it. ALWAYS search first."
|
|
72
|
+
)
|
|
73
|
+
|
|
35
74
|
# Extra keywords appended to tool descriptions for BM25 ranking.
|
|
36
75
|
# Applied unconditionally via SearchKeywordsTransform so they also
|
|
37
76
|
# improve retrieval for Claude's native deferred-tool search on
|
|
@@ -72,8 +111,12 @@ SEARCH_KEYWORDS: dict[str, str] = {
|
|
|
72
111
|
"counter timer input_datetime input_select"
|
|
73
112
|
),
|
|
74
113
|
"ha_get_entity": ("get entity state attributes details single specific entity_id"),
|
|
114
|
+
# #2576: BM25 has no stemming, so "lights" never matched "light". No
|
|
115
|
+
# control verbs (on/off/turn) here: they would pull "turn off lights"
|
|
116
|
+
# onto this read tool.
|
|
75
117
|
"ha_get_state": (
|
|
76
|
-
"get current state value single entity check status bulk multiple states"
|
|
118
|
+
"get current state value single entity check status bulk multiple states "
|
|
119
|
+
"which lights"
|
|
77
120
|
),
|
|
78
121
|
"ha_config_set_automation": (
|
|
79
122
|
"create update modify edit automation triggers conditions actions "
|
|
@@ -391,7 +434,7 @@ LITE_DOCSTRINGS: dict[str, str] = {
|
|
|
391
434
|
"actually contains, and the encryption key a restore needs, see "
|
|
392
435
|
"ha_get_skill_guide (`references/backups.md`)."
|
|
393
436
|
),
|
|
394
|
-
# ha_report_issue: the lite value is about
|
|
437
|
+
# ha_report_issue: the lite value is about four fifths of the full
|
|
395
438
|
# docstring. As for ha_manage_backup, no exact pair is quoted.
|
|
396
439
|
#
|
|
397
440
|
# Unlike every other entry here, the deferral target is the tool's
|
|
@@ -404,10 +447,14 @@ LITE_DOCSTRINGS: dict[str, str] = {
|
|
|
404
447
|
# outright so a compliant agent doesn't spend a call finding out.
|
|
405
448
|
"ha_report_issue": (
|
|
406
449
|
"Get diagnostic information plus a finished GitHub issue. Covers "
|
|
407
|
-
"
|
|
408
|
-
"unexpectedly)
|
|
409
|
-
"tool or worked inefficiently)
|
|
410
|
-
"
|
|
450
|
+
"three kinds of report: a runtime bug (ha-mcp errored or behaved "
|
|
451
|
+
"unexpectedly), agent-behaviour feedback (the AI used the wrong "
|
|
452
|
+
"tool or worked inefficiently) and a feature request (ha-mcp "
|
|
453
|
+
"cannot do something yet). Pass the report text in the call; "
|
|
454
|
+
"the server builds the issue title, body and a pre-filled link. "
|
|
455
|
+
"Every GitHub issue about ha-mcp, feature requests included, should "
|
|
456
|
+
"carry this report as its body; a bug report filed without it is "
|
|
457
|
+
"closed after 24 hours.\n\n"
|
|
411
458
|
"The response carries the full workflow in its `instructions` "
|
|
412
459
|
"field (duplicate check, the mandatory anonymisation step, and "
|
|
413
460
|
"how to file the issue), plus "
|
|
@@ -482,3 +529,24 @@ SKILL_USE_BEFORE_KEYWORDS: str = (
|
|
|
482
529
|
"ha_config_set_script, ha_config_set_helper, ha_config_set_dashboard, "
|
|
483
530
|
"or ha_set_entity."
|
|
484
531
|
)
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
READ_ONLY_INSTRUCTIONS = (
|
|
535
|
+
"## Read Only Mode\n"
|
|
536
|
+
"This server is running in Read Only Mode: write-capable "
|
|
537
|
+
"tools are disabled and every write or destructive "
|
|
538
|
+
"operation is blocked with a READ_ONLY_MODE error. You can "
|
|
539
|
+
"search, read, and analyze freely. To allow changes, the "
|
|
540
|
+
"user must turn off Read Only Mode in the ha-mcp settings "
|
|
541
|
+
"UI (Tools tab) or the app (add-on) configuration."
|
|
542
|
+
)
|
|
543
|
+
|
|
544
|
+
# ha_report_issue is a mandatory tool, so this always points at a tool the
|
|
545
|
+
# client has. The issue tracker's report gate closes bug reports without it.
|
|
546
|
+
ISSUE_FILING_INSTRUCTIONS = (
|
|
547
|
+
"## Filing ha-mcp issues\n"
|
|
548
|
+
"Before filing any GitHub issue about ha-mcp, feature requests "
|
|
549
|
+
"included, run ha_report_issue and put the issue_body it returns "
|
|
550
|
+
"in the issue unchanged. A bug report filed without it is closed "
|
|
551
|
+
"automatically after 24 hours."
|
|
552
|
+
)
|
{ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/en.json
RENAMED
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
"features.enable_tool_search.label": "Enable tool search",
|
|
133
133
|
"features.enable_tool_search.help": "Replace the full tool catalog with search-based discovery. Reduces idle context by roughly 90%, to about 5K tokens. ⚠️ Do NOT enable this in clients with their own built-in tool search / deferred tools (claude.ai, Claude Desktop, Claude Code) — the two search layers conflict, and the client's built-in tool search is the better choice there; leave this off. Whether tools are deferred depends on your client and model combination: use this when your setup loads the full catalog up front — models without native deferred tools (e.g. Gemini, OpenAI-compatible local models, Claude Haiku), clients that inline all tool schemas regardless of model (e.g. GitHub Copilot CLI), or smaller context windows. Some Codex models and ChatGPT include deferred tools too — check your client/model directly to confirm its features so you don't leave this enabled unnecessarily. Tools are found via ha_search_tools and executed via categorized proxies (read/write/delete). Requires restart to take effect.",
|
|
134
134
|
"features.tool_search_max_results.label": "Tool search max results",
|
|
135
|
-
"features.tool_search_max_results.help": "Maximum number of tools returned
|
|
135
|
+
"features.tool_search_max_results.help": "Maximum number of hidden tools returned per ha_search_tools call when tool search is enabled; a pinned tool that ranks inside that top count is added as a short name-only entry on top of it. Lower values (2-3) save context tokens but may miss relevant tools. Range: 2-10. Requires restart.",
|
|
136
136
|
"features.enable_tool_security_policies.label": "Enable Tool Security Policies (advanced)",
|
|
137
137
|
"features.enable_tool_security_policies.help": "Gate high-stakes tool calls (lock/alarm control, automation writes, etc.) behind user approval. When a guarded tool is called, the agent tells the user to open the Tool Security Policies tab in the web UI and click Approve before the call proceeds. Per-tool rules with optional argument conditions are configured in the Tool Security Policies tab. Off by default. Requires restart to take effect.",
|
|
138
138
|
"features.read_only_mode.label": "Read Only Mode",
|
|
@@ -13,7 +13,7 @@ const FEATURE_META = {
|
|
|
13
13
|
},
|
|
14
14
|
tool_search_max_results: {
|
|
15
15
|
label: "Tool search max results",
|
|
16
|
-
help: "Maximum number of tools returned
|
|
16
|
+
help: "Maximum number of hidden tools returned per ha_search_tools call when tool search is enabled; a pinned tool that ranks inside that top count is added as a short name-only entry on top of it. Lower values (2-3) save context tokens but may miss relevant tools. Range: 2-10. Requires restart.",
|
|
17
17
|
},
|
|
18
18
|
enable_tool_security_policies: {
|
|
19
19
|
label: "Enable Tool Security Policies (advanced)",
|
|
@@ -1667,11 +1667,11 @@ survives an agent's own mistakes.
|
|
|
1667
1667
|
- List snapshots (to discover a backup_id or confirm one landed): `ha_manage_backup(scope="snapshot", action="list")`
|
|
1668
1668
|
- Restore full snapshot: `ha_manage_backup(scope="snapshot", action="restore", backup_id="dd7550ed")`
|
|
1669
1669
|
- Delete an old snapshot (requires `enable_snapshot_delete=true`): `ha_manage_backup(scope="snapshot", action="delete", backup_id="dd7550ed", confirm=True)`
|
|
1670
|
-
- On-demand entity snapshot before a manual UI edit: `ha_manage_backup(scope="edits", action="create", domain="helper_input_boolean", entity_id="
|
|
1671
|
-
- List recent auto-backups for one automation: `ha_manage_backup(scope="edits", action="list", domain="automation", entity_id="
|
|
1672
|
-
- View an auto-backup: `ha_manage_backup(scope="edits", action="view", backup_name="automation.
|
|
1673
|
-
- Diff an auto-backup vs current state: `ha_manage_backup(scope="edits", action="diff", backup_name="automation.
|
|
1674
|
-
- Restore an auto-backup: `ha_manage_backup(scope="edits", action="restore", backup_name="automation.
|
|
1670
|
+
- On-demand entity snapshot before a manual UI edit: `ha_manage_backup(scope="edits", action="create", domain="helper_input_boolean", entity_id="welcome_home_active")`
|
|
1671
|
+
- List recent auto-backups for one automation: `ha_manage_backup(scope="edits", action="list", domain="automation", entity_id="welcome_home")`
|
|
1672
|
+
- View an auto-backup: `ha_manage_backup(scope="edits", action="view", backup_name="automation.welcome_home.20260521_153000.yaml")`
|
|
1673
|
+
- Diff an auto-backup vs current state: `ha_manage_backup(scope="edits", action="diff", backup_name="automation.welcome_home.20260521_153000.yaml")`
|
|
1674
|
+
- Restore an auto-backup: `ha_manage_backup(scope="edits", action="restore", backup_name="automation.welcome_home.20260521_153000.yaml")`
|
|
1675
1675
|
- Delete one auto-backup: `ha_manage_backup(scope="edits", action="delete", backup_name="...")`
|
|
1676
1676
|
- Bulk-delete old auto-backups: `ha_manage_backup(scope="edits", action="delete", older_than_days=30)`
|
|
1677
1677
|
"""
|