ha-mcp-dev 9.3.0.dev3503__tar.gz → 9.3.0.dev3509__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/PKG-INFO +1 -1
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/pyproject.toml +1 -1
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/pyproject.toml.orig +1 -1
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/__init__.py +1 -1
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/backup_manager.py +1 -1
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/config.py +8 -19
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/config_overrides.py +1 -1
- ha_mcp_dev-9.3.0.dev3503/src/ha_mcp/_rich_compat.py → ha_mcp_dev-9.3.0.dev3509/src/ha_mcp/rich_compat.py +2 -1
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/__init__.py +8 -6
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_handlers_advanced.py +2 -2
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_handlers_backups.py +2 -2
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_handlers_server.py +2 -2
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_i18n.py +4 -4
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_persistence.py +1 -1
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_theme.py +1 -1
- ha_mcp_dev-9.3.0.dev3503/src/ha_mcp/settings_ui/_locale_policy.py → ha_mcp_dev-9.3.0.dev3509/src/ha_mcp/settings_ui/locale_policy.py +4 -1
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/README.md +13 -15
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_helpers/update.py +3 -3
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/search/overview.py +8 -7
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/search/response.py +4 -3
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_config_dashboards.py +5 -5
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_dev.py +4 -4
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_search.py +6 -6
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_yaml_config.py +3 -3
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/python_sandbox.py +8 -6
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/LICENSE +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/README.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev_security.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/mixins/skills.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/mixins/extensions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/skills/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/skills/_constants.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/skills/_resources.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/skills/_snapshot.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/skills/_source.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/skills/client.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/skills/extension.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/skills/models.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/_request_clock.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/app_discovery.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/auth/iss_stamp.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/backup_calendar.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/backup_dashboards.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/backup_diff.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/backup_entities.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/backup_entity_ids.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/backup_files.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/backup_helper_target.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/backup_integrations.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/backup_tags.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/backup_todo.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/backup_zones.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/client/admin_routes.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/client/config_entry_read.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/client/error_log_journald.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/client/event_listeners.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/client/models.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/client/websocket_state.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/config_backup.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/config_meta.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/config_registry.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/config_settings.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/dashboard_screenshot/engine_compat.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/dashboard_screenshot/theme_check.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/http_transport.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/image_info.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/ipv6_lan_guard.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/listen_sockets.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/mcp_client_context.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/policy/decision_pin.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/policy/decisions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/policy/events.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/policy/mrtr.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/policy/server_channels.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/server_instructions.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/server_lifespan.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/server_tool_text.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_handlers_oauth_callbacks.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/az.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/hu.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/sr-Latn.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/sr.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/settings_js/10_oauth_callbacks.js +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/storage_helper_types.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tool_catalog.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/addon_connection_hints.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/area_messages.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/automation_errors.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/automation_registry_details.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/backup_access.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/backup_on_demand.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/backup_snapshot.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/backup_snapshot_restore.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/blueprint_sources.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/bug_report_config.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/bug_report_redaction.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/bug_report_sources.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/bug_report_templates.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/coercion.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/component_automation.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/component_flow.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/component_helper_collections.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/component_todo.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_entry_backup.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_entry_flow_errors.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_entry_flow_progress.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_entry_flow_submit.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_file_visibility.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_helpers/create.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_helpers/icon_route.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_write_errors.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_write_helpers.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/core_contract.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/dashboard_card_describe.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/dashboard_read_errors.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/dev_backup.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/device_enrichment.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/energy_preferences.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/entity_expose_batch.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/entity_registration.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/entity_removal.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/entity_update_fields.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/event_call.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/event_listener_fields.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/file_edit_refusal.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/flow_helper_lookup.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/flow_translations.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/hacs_backend.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/hacs_own_repository.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/helper_flows.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/history_response.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/ignored_entries.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/integration_entry_state.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/integration_flow_steps.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/integration_schema.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/integration_ws_commands.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/log_sources_logbook.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/recorder_errors.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/resource_codec.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/resource_patch.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/response_helpers.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/scene_discovery.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/search/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/search/base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/search/component.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/search/entities.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/search/legacy.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/search/modes.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/search/state.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/server_version.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/smart_search/_flow_helpers.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/statistics_calendar.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/statistics_helpers.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/statistics_resets.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/system_restart.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tool_hints.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/trace_diagnostics.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/trace_logbook.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/trace_lookup.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/update_categories.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/ws_waiters.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/yaml_extra_keys.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/transforms/compact_params.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/transforms/component_helpers.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/transforms/component_search.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/transforms/write_tool_note.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/dashboard_patch.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/mcp_client_host.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/registry_update_lock.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/visibility/config_files.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/visibility/identifier_aliases.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/visibility/result_payloads.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "9.3.0.
|
|
7
|
+
version = "9.3.0.dev3509"
|
|
8
8
|
description = "Configure and automate Home Assistant with Claude, ChatGPT, and other AI assistants."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.14,<3.15"
|
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "9.3.0.
|
|
7
|
+
version = "9.3.0.dev3509"
|
|
8
8
|
description = "Configure and automate Home Assistant with Claude, ChatGPT, and other AI assistants."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
# Upper bound widened to <3.15 so the package installs on Home Assistant's
|
|
@@ -25,7 +25,7 @@ if sys.version_info < (3, 14):
|
|
|
25
25
|
# Must be imported before anything that reaches fastmcp (``.auth`` below does),
|
|
26
26
|
# because fastmcp configures rich logging at import time and dies on a rich
|
|
27
27
|
# older than 13.9.4. Importing this module applies the shim. See #2186.
|
|
28
|
-
from . import
|
|
28
|
+
from . import rich_compat as rich_compat
|
|
29
29
|
from ._version import get_version
|
|
30
30
|
|
|
31
31
|
__version__ = get_version()
|
|
@@ -1961,7 +1961,7 @@ def get_backup_manager(client: Any, settings: Any) -> BackupManager:
|
|
|
1961
1961
|
manager (and one set of per-entity locks). Rebuilds when the
|
|
1962
1962
|
``settings`` object identity differs from the cached manager's —
|
|
1963
1963
|
runtime env-var changes that reset the global settings singleton
|
|
1964
|
-
(see ``config.
|
|
1964
|
+
(see ``config.reset_global_settings``) yield a fresh ``settings``
|
|
1965
1965
|
instance, which forces a manager rebuild so new settings take effect.
|
|
1966
1966
|
Active guards, capture locks and restore pins survive that replacement.
|
|
1967
1967
|
"""
|
|
@@ -61,7 +61,6 @@ __all__ = [
|
|
|
61
61
|
"Settings",
|
|
62
62
|
"_coerce_advanced_override_value",
|
|
63
63
|
"_read_feature_flag_override_file",
|
|
64
|
-
"_reset_global_settings",
|
|
65
64
|
"_settings",
|
|
66
65
|
"get_backup_setting_origin",
|
|
67
66
|
"get_embedded_config_dir",
|
|
@@ -124,7 +123,7 @@ def set_embedded_connection(
|
|
|
124
123
|
server entry inside its server worker thread, before the server is
|
|
125
124
|
constructed, so the loopback URL
|
|
126
125
|
and admin token reach ``Settings`` in memory instead of through ``os.environ``.
|
|
127
|
-
The values survive ``
|
|
126
|
+
The values survive ``reset_global_settings()``: the settings-UI reset+rebuild
|
|
128
127
|
path re-applies them on the next ``get_global_settings()`` call.
|
|
129
128
|
|
|
130
129
|
Also applies to an ALREADY-BUILT singleton: importing ``ha_mcp`` runs the
|
|
@@ -205,7 +204,7 @@ def should_emit_llm_api_metadata() -> bool:
|
|
|
205
204
|
def _reset_embedded_connection() -> None:
|
|
206
205
|
"""Drop the registered embedded connection (test seam).
|
|
207
206
|
|
|
208
|
-
Sibling to :func:`
|
|
207
|
+
Sibling to :func:`reset_global_settings`; lets suites that exercise the
|
|
209
208
|
in-process token channel isolate state between tests. Not used in production —
|
|
210
209
|
the connection is registered once per worker thread and is meant to persist.
|
|
211
210
|
"""
|
|
@@ -236,7 +235,7 @@ def get_global_settings() -> Settings:
|
|
|
236
235
|
|
|
237
236
|
Applies override files at first read so web-UI edits take effect
|
|
238
237
|
on the next ``get_global_settings()`` call after
|
|
239
|
-
``
|
|
238
|
+
``reset_global_settings()`` is called by the POST handler:
|
|
240
239
|
|
|
241
240
|
- Feature flags persisted to ``<data_dir>/feature_flags.json``
|
|
242
241
|
- Auto-backup settings persisted to ``<data_dir>/backup_settings.json``
|
|
@@ -256,26 +255,16 @@ def get_global_settings() -> Settings:
|
|
|
256
255
|
|
|
257
256
|
|
|
258
257
|
def reset_global_settings() -> None:
|
|
259
|
-
"""
|
|
258
|
+
"""Drop the cached settings singleton so the next read rebuilds it.
|
|
260
259
|
|
|
261
260
|
The in-process (embedded) server calls this at every start: a config-entry
|
|
262
261
|
reload reuses the same Python process, so without an explicit reset the
|
|
263
262
|
singleton built on the FIRST start would keep serving stale feature-flag /
|
|
264
263
|
override values forever (the add-on gets fresh settings for free from its
|
|
265
|
-
process restart).
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
def _reset_global_settings() -> None:
|
|
271
|
-
"""Drop the cached settings singleton.
|
|
272
|
-
|
|
273
|
-
Test seam so suites that mutate env vars can force a re-read
|
|
274
|
-
without reaching into module-private state. Also used by the
|
|
275
|
-
feature-flag and auto-backup settings POST handlers to publish a
|
|
276
|
-
freshly edited override file value to runtime consumers
|
|
277
|
-
(``get_global_settings`` is the only documented read path; the
|
|
278
|
-
``@with_auto_backup`` decorator reads it per tool call).
|
|
264
|
+
process restart). The settings POST handlers call it to publish a freshly
|
|
265
|
+
edited override file value to runtime consumers (``get_global_settings`` is
|
|
266
|
+
the only documented read path; the ``@with_auto_backup`` decorator reads it
|
|
267
|
+
per tool call), and tests that mutate env vars call it to force a re-read.
|
|
279
268
|
"""
|
|
280
269
|
global _settings
|
|
281
270
|
_settings = None
|
|
@@ -27,7 +27,7 @@ logger = logging.getLogger("ha_mcp.config")
|
|
|
27
27
|
# INFO log so we don't spam addon logs on every Settings rebuild
|
|
28
28
|
# now that the cascade-clear is gone and the file may carry truthy
|
|
29
29
|
# sub-flag values long-term. Reset alongside
|
|
30
|
-
# the Settings singleton in ``
|
|
30
|
+
# the Settings singleton in ``reset_global_settings``.
|
|
31
31
|
_BETA_GATE_LOGGED: set[str] = set()
|
|
32
32
|
|
|
33
33
|
|
|
@@ -51,7 +51,8 @@ def ensure_rich_handler_compat() -> bool:
|
|
|
51
51
|
Returns ``True`` when a shim is in place (freshly applied or already
|
|
52
52
|
applied), ``False`` when none is needed or none could be applied — an
|
|
53
53
|
unimportable ``rich``, an uninspectable ``__init__``, or a signature that
|
|
54
|
-
already absorbs ``**kwargs``.
|
|
54
|
+
already absorbs ``**kwargs``. Importing ``ha_mcp`` applies it once; a
|
|
55
|
+
public module so tests can re-apply it to a stand-in ``RichHandler``.
|
|
55
56
|
"""
|
|
56
57
|
try:
|
|
57
58
|
from rich.logging import RichHandler
|
|
@@ -155,7 +155,7 @@ except OSError as exc: # pragma: no cover - packaging guard
|
|
|
155
155
|
# __HA_MCP_CSS__ -> settings.css contents (inside <style>)
|
|
156
156
|
# __HA_MCP_JS__ -> settings_js/ contents (inside <script>)
|
|
157
157
|
# __HA_MCP_THEME_PREFS__ -> per-request server-seeded theme prefs JSON,
|
|
158
|
-
# substituted in
|
|
158
|
+
# substituted in render_settings_html()
|
|
159
159
|
# __HA_MCP_I18N__ -> selected merged translation catalog JSON
|
|
160
160
|
# __HA_MCP_LANG__ -> selected locale code for the html lang attribute
|
|
161
161
|
# __HA_MCP_DIR__ -> selected catalog text direction (ltr / rtl)
|
|
@@ -190,7 +190,7 @@ for _sentinel in (
|
|
|
190
190
|
)
|
|
191
191
|
|
|
192
192
|
# CSS and JS are injected once at import; __HA_MCP_THEME_PREFS__ remains in the
|
|
193
|
-
# string and is substituted per-request in
|
|
193
|
+
# string and is substituted per-request in render_settings_html().
|
|
194
194
|
_SETTINGS_HTML = _settings_html_template.replace(
|
|
195
195
|
"__HA_MCP_CSS__", _SETTINGS_CSS
|
|
196
196
|
).replace("__HA_MCP_JS__", _SETTINGS_JS)
|
|
@@ -373,9 +373,11 @@ def _build_visibility_handlers(*, data_dir: Path) -> dict[str, Any]:
|
|
|
373
373
|
}
|
|
374
374
|
|
|
375
375
|
|
|
376
|
-
def
|
|
377
|
-
"""
|
|
376
|
+
def render_settings_html(request: Request | None = None) -> str:
|
|
377
|
+
"""Render the settings page every settings-page route serves.
|
|
378
378
|
|
|
379
|
+
Substitutes theme preferences and the request-selected locale. Public
|
|
380
|
+
because the JS behaviour tests load the served page from here.
|
|
379
381
|
The ``server-prefs`` head script carries a ``data-prefs`` attribute
|
|
380
382
|
with a placeholder token; request-time substitution keeps
|
|
381
383
|
``_SETTINGS_HTML`` a static import-time constant (and keeps the script
|
|
@@ -455,10 +457,10 @@ def build_settings_handlers(
|
|
|
455
457
|
"""
|
|
456
458
|
|
|
457
459
|
async def _root_page(request: Request) -> HTMLResponse:
|
|
458
|
-
return HTMLResponse(
|
|
460
|
+
return HTMLResponse(render_settings_html(request))
|
|
459
461
|
|
|
460
462
|
async def _settings_page(request: Request) -> HTMLResponse:
|
|
461
|
-
return HTMLResponse(
|
|
463
|
+
return HTMLResponse(render_settings_html(request))
|
|
462
464
|
|
|
463
465
|
handlers: dict[str, Any] = {
|
|
464
466
|
"root_page": _root_page,
|
{ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_handlers_advanced.py
RENAMED
|
@@ -21,7 +21,7 @@ from starlette.requests import Request
|
|
|
21
21
|
from starlette.responses import JSONResponse
|
|
22
22
|
|
|
23
23
|
from .._version import is_running_in_addon
|
|
24
|
-
from ..config import
|
|
24
|
+
from ..config import get_global_settings, reset_global_settings
|
|
25
25
|
from ..errors import ErrorCode, create_error_response
|
|
26
26
|
from . import _persistence, _supervisor
|
|
27
27
|
|
|
@@ -594,7 +594,7 @@ async def _save_advanced_settings(
|
|
|
594
594
|
if write_err is not None:
|
|
595
595
|
return write_err
|
|
596
596
|
|
|
597
|
-
|
|
597
|
+
reset_global_settings()
|
|
598
598
|
return JSONResponse(
|
|
599
599
|
{
|
|
600
600
|
"success": True,
|
{ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_handlers_backups.py
RENAMED
|
@@ -38,9 +38,9 @@ from ..backup_manager import (
|
|
|
38
38
|
from ..backup_todo import TodoListNotLoaded
|
|
39
39
|
from ..config import (
|
|
40
40
|
BACKUP_OVERRIDE_FIELDS,
|
|
41
|
-
_reset_global_settings,
|
|
42
41
|
get_backup_setting_origin,
|
|
43
42
|
get_global_settings,
|
|
43
|
+
reset_global_settings,
|
|
44
44
|
)
|
|
45
45
|
from ..config_registry import SETTING_BOUNDS
|
|
46
46
|
from ..errors import ErrorCode, create_error_response
|
|
@@ -557,7 +557,7 @@ def _apply_backup_config_file(clean: dict[str, Any]) -> JSONResponse:
|
|
|
557
557
|
# File-mode auto-backup settings take effect immediately on the next
|
|
558
558
|
# ``get_global_settings()`` read — no restart needed, hence
|
|
559
559
|
# ``restart_required=False``.
|
|
560
|
-
|
|
560
|
+
reset_global_settings()
|
|
561
561
|
return JSONResponse(
|
|
562
562
|
{"success": True, "applied": clean, "mode": "file", "restart_required": False}
|
|
563
563
|
)
|
{ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_handlers_server.py
RENAMED
|
@@ -28,7 +28,7 @@ from starlette.requests import Request
|
|
|
28
28
|
from starlette.responses import JSONResponse
|
|
29
29
|
|
|
30
30
|
from .._version import get_version, is_embedded, is_running_in_addon
|
|
31
|
-
from ..config import
|
|
31
|
+
from ..config import get_global_settings, reset_global_settings
|
|
32
32
|
from ..errors import ErrorCode, create_error_response
|
|
33
33
|
from . import _persistence, _supervisor
|
|
34
34
|
|
|
@@ -833,7 +833,7 @@ async def _save_feature_flags(
|
|
|
833
833
|
# Publish the change so the same process picks it up on the next
|
|
834
834
|
# ``get_global_settings()`` call. ``restart_required=True`` because
|
|
835
835
|
# feature flags gate tool registration / transforms at startup.
|
|
836
|
-
|
|
836
|
+
reset_global_settings()
|
|
837
837
|
return JSONResponse(
|
|
838
838
|
{
|
|
839
839
|
"success": True,
|
|
@@ -14,7 +14,7 @@ from collections import Counter
|
|
|
14
14
|
from pathlib import Path
|
|
15
15
|
from typing import Any
|
|
16
16
|
|
|
17
|
-
from . import
|
|
17
|
+
from . import locale_policy
|
|
18
18
|
|
|
19
19
|
_LOGGER = logging.getLogger(__name__)
|
|
20
20
|
|
|
@@ -328,11 +328,11 @@ def load_catalogs(
|
|
|
328
328
|
catalogs[locale] = _load_catalog_file(
|
|
329
329
|
path,
|
|
330
330
|
best_effort_locale=(
|
|
331
|
-
locale if
|
|
331
|
+
locale if locale_policy.is_best_effort_locale(locale) else None
|
|
332
332
|
),
|
|
333
333
|
)
|
|
334
334
|
except (ImportError, ValueError) as exc:
|
|
335
|
-
if not
|
|
335
|
+
if not locale_policy.is_best_effort_locale(locale):
|
|
336
336
|
raise
|
|
337
337
|
_warn_best_effort_catalog(locale, path, exc)
|
|
338
338
|
|
|
@@ -344,7 +344,7 @@ def load_catalogs(
|
|
|
344
344
|
strict_catalogs = {
|
|
345
345
|
locale: catalog
|
|
346
346
|
for locale, catalog in catalogs.items()
|
|
347
|
-
if not
|
|
347
|
+
if not locale_policy.is_best_effort_locale(locale)
|
|
348
348
|
}
|
|
349
349
|
_validate_placeholder_parity(strict_catalogs)
|
|
350
350
|
_validate_inline_markup(strict_catalogs)
|
{ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/_persistence.py
RENAMED
|
@@ -344,7 +344,7 @@ def _get_backup_settings_override_path() -> Path:
|
|
|
344
344
|
|
|
345
345
|
Sits next to ``tool_config.json`` in the same data dir. Web UI edits
|
|
346
346
|
in standalone (non-addon) mode persist here; ``get_global_settings``
|
|
347
|
-
reads the file on the next call after ``
|
|
347
|
+
reads the file on the next call after ``reset_global_settings``.
|
|
348
348
|
"""
|
|
349
349
|
return get_data_dir() / "backup_settings.json"
|
|
350
350
|
|
|
@@ -125,7 +125,7 @@ def _load_theme_prefs() -> dict[str, str]:
|
|
|
125
125
|
# Hand-edited values outside the offered sets are dropped on load
|
|
126
126
|
# AND overwritten by the next save's RMW merge — leave a trail so
|
|
127
127
|
# the edit's author can see why their value never sticks. Warn
|
|
128
|
-
# once per key per process:
|
|
128
|
+
# once per key per process: render_settings_html() calls this on
|
|
129
129
|
# every page view, and a permanently stale key (e.g. left behind
|
|
130
130
|
# by a future version) must not spam the log forever (#1574
|
|
131
131
|
# review).
|
{ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/settings_ui/locales/README.md
RENAMED
|
@@ -80,21 +80,21 @@ or constructed — needs no pipeline change.
|
|
|
80
80
|
rejected when the catalog loads.
|
|
81
81
|
- `messages`: interface labels, help text, notices, and runtime messages. Keys
|
|
82
82
|
may be omitted — English is the per-key fallback at runtime — but see the
|
|
83
|
-
share limit below before leaving a catalog half-finished.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
presence, so an empty value would win over English and render as nothing.
|
|
83
|
+
share limit below before leaving a catalog half-finished. A key that is
|
|
84
|
+
present but blank is rejected when the catalog loads, because the runtime
|
|
85
|
+
resolves by key presence, so an empty value would win over English and render as nothing.
|
|
87
86
|
- `tool_groups`: one entry per renderable MCP tool tag, keyed by the English
|
|
88
|
-
tag.
|
|
89
|
-
here too, but dropping the key is not the escape hatch it is for `messages` —
|
|
90
|
-
the exact key set forbids that. A heading you have not translated yet keeps
|
|
91
|
-
the English tag as its value.
|
|
87
|
+
tag. Blank is rejected here too.
|
|
92
88
|
- `tools`: `title` and `description` per tool, keyed by the stable MCP tool
|
|
93
|
-
name.
|
|
94
|
-
|
|
89
|
+
name. Either field on its own may be left out, but a missing one counts
|
|
90
|
+
as untranslated against the
|
|
95
91
|
share limit below. Blank is rejected here too, for the same reason.
|
|
96
92
|
|
|
97
|
-
Keep the keys and `{placeholders}` unchanged in every section.
|
|
93
|
+
Keep the keys and `{placeholders}` unchanged in every section. Omitting is
|
|
94
|
+
the only way to say "not translated yet": the sync fills missing keys and
|
|
95
|
+
retranslates a present value only when its English changes. A new catalog
|
|
96
|
+
may omit `tool_groups` or `tools`, or leave out entries it has not translated;
|
|
97
|
+
the exact key sets are checked after the sync, not in PR CI.
|
|
98
98
|
|
|
99
99
|
`messages` values carry two further rules, both enforced when the catalog
|
|
100
100
|
loads rather than by a named test — breaking one raises a `ValueError` at
|
|
@@ -114,10 +114,6 @@ In PR CI (ungated — `tests/src/unit/test_locale_parity.py` unless another file
|
|
|
114
114
|
is named):
|
|
115
115
|
|
|
116
116
|
- Every surface carries the same set of language codes.
|
|
117
|
-
- Settings UI `messages` may omit keys because English is the per-key
|
|
118
|
-
fallback, but a locale may not carry a key absent from `en.json`: nothing
|
|
119
|
-
can render it. `tool_groups` and `tools` must instead match the renderable
|
|
120
|
-
keys exactly.
|
|
121
117
|
- Every decided `Decision` outcome (all but `pending`) and every
|
|
122
118
|
`PredicateOp` operator has a word in every catalog, non-blank — and in every
|
|
123
119
|
catalog but `en.json` not still spelled the way the backend does
|
|
@@ -156,6 +152,8 @@ In the post-merge `locale-sync.yml` workflow only (the same files, gated behind
|
|
|
156
152
|
`LOCALE_COMPLETENESS_CHECKS=1` — a PR that changes English merges without
|
|
157
153
|
these, and the daily sync owes them afterwards):
|
|
158
154
|
|
|
155
|
+
- Settings UI `messages` may not carry a key absent from `en.json`: nothing
|
|
156
|
+
can render it.
|
|
159
157
|
- `tool_groups` and `tools` name exactly the renderable groups and tools.
|
|
160
158
|
The check parses the registered tool set from source rather than trusting
|
|
161
159
|
generated `tools.json`, so a broken generator cannot validate its own stale
|
{ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/config_helpers/update.py
RENAMED
|
@@ -32,7 +32,7 @@ from .schemas import (
|
|
|
32
32
|
)
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
async def
|
|
35
|
+
async def stored_item(
|
|
36
36
|
client: Any, helper_type: str, entity_id: str, unique_id: str
|
|
37
37
|
) -> dict[str, Any]:
|
|
38
38
|
"""The stored item from ``<type>/list`` (person nests its storage items)."""
|
|
@@ -71,7 +71,7 @@ async def _execute_legacy_update(
|
|
|
71
71
|
fields: dict[str, Any],
|
|
72
72
|
) -> dict[str, Any]:
|
|
73
73
|
"""Update through Core's ``<type>/update`` WS command (no component)."""
|
|
74
|
-
stored = await
|
|
74
|
+
stored = await stored_item(client, helper_type, entity_id, unique_id)
|
|
75
75
|
body = merged_update(helper_type, stored, name, item_icon, fields)
|
|
76
76
|
result = await client.send_websocket_message(
|
|
77
77
|
{**body, "type": f"{helper_type}/update", f"{helper_type}_id": unique_id}
|
|
@@ -79,7 +79,7 @@ async def _execute_legacy_update(
|
|
|
79
79
|
if not result.get("success"):
|
|
80
80
|
code = ws_failure_code(result)
|
|
81
81
|
if code is ErrorCode.RESOURCE_NOT_FOUND:
|
|
82
|
-
# The item vanished after
|
|
82
|
+
# The item vanished after stored_item read it; report it the same way.
|
|
83
83
|
code = ErrorCode.CONFIG_NOT_FOUND
|
|
84
84
|
raise_tool_error(
|
|
85
85
|
create_error_response(
|
|
@@ -23,9 +23,9 @@ from ..util_helpers import filter_active_repairs, project_repair_fields
|
|
|
23
23
|
from .base import SearchToolsBase
|
|
24
24
|
|
|
25
25
|
__all__ = [
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
26
|
+
"OVERVIEW_AVAILABLE_FIELDS",
|
|
27
|
+
"OVERVIEW_ENTITY_FIELDS",
|
|
28
|
+
"OVERVIEW_INDEPENDENT_FIELDS",
|
|
29
29
|
"OverviewMixin",
|
|
30
30
|
"_OverviewInputs",
|
|
31
31
|
"logger",
|
|
@@ -73,8 +73,9 @@ class _OverviewSlices:
|
|
|
73
73
|
|
|
74
74
|
|
|
75
75
|
# These disjoint sets partition every key documented by ha_get_overview's
|
|
76
|
-
# fields parameter.
|
|
77
|
-
|
|
76
|
+
# fields parameter. Public so the fields-docstring drift test can check that
|
|
77
|
+
# partition; keep it in sync when the public schema changes.
|
|
78
|
+
OVERVIEW_INDEPENDENT_FIELDS = frozenset(
|
|
78
79
|
{
|
|
79
80
|
"success",
|
|
80
81
|
"system_info",
|
|
@@ -108,7 +109,7 @@ _OVERVIEW_REPAIR_FIELDS = frozenset(
|
|
|
108
109
|
)
|
|
109
110
|
|
|
110
111
|
|
|
111
|
-
|
|
112
|
+
OVERVIEW_ENTITY_FIELDS = frozenset(
|
|
112
113
|
{
|
|
113
114
|
"system_summary",
|
|
114
115
|
"domain_stats",
|
|
@@ -123,7 +124,7 @@ _OVERVIEW_ENTITY_FIELDS = frozenset(
|
|
|
123
124
|
)
|
|
124
125
|
|
|
125
126
|
|
|
126
|
-
|
|
127
|
+
OVERVIEW_AVAILABLE_FIELDS = OVERVIEW_INDEPENDENT_FIELDS | OVERVIEW_ENTITY_FIELDS
|
|
127
128
|
|
|
128
129
|
|
|
129
130
|
def _build_component_overview_request(inputs: _OverviewInputs) -> dict[str, Any]:
|
|
@@ -53,8 +53,9 @@ _CONFIG_BUCKETS: tuple[str, ...] = (
|
|
|
53
53
|
# pins their presence (search_type at 17+ sites, domain_filter at 6,
|
|
54
54
|
# area_filter at 1, message at 2), so callers verifiably depend on them.
|
|
55
55
|
# All are documented as top-level keys + retained in
|
|
56
|
-
# ``_ALWAYS_KEEP_PROJECTION``.
|
|
57
|
-
|
|
56
|
+
# ``_ALWAYS_KEEP_PROJECTION``. Public so the fields-docstring drift test can
|
|
57
|
+
# require every emitted entities-branch key to be stripped or documented.
|
|
58
|
+
ENTITIES_BRANCH_SKIP_KEYS: tuple[str, ...] = (
|
|
58
59
|
"results",
|
|
59
60
|
"total_matches",
|
|
60
61
|
"has_more",
|
|
@@ -522,7 +523,7 @@ def _apply_search_outcome(
|
|
|
522
523
|
_merge_payload_metadata(
|
|
523
524
|
response,
|
|
524
525
|
payload,
|
|
525
|
-
skip_keys=
|
|
526
|
+
skip_keys=ENTITIES_BRANCH_SKIP_KEYS,
|
|
526
527
|
)
|
|
527
528
|
elif label == "configs":
|
|
528
529
|
for bucket in _CONFIG_BUCKETS:
|
{ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
@@ -267,8 +267,8 @@ _NON_CARD_CHILD_KEYS = ("elements",)
|
|
|
267
267
|
# The card_type value that selects view badges, which are not cards.
|
|
268
268
|
_BADGE_CARD_TYPE = "badge"
|
|
269
269
|
# Bound on card nesting levels against pathological configs; real dashboards
|
|
270
|
-
# nest a handful.
|
|
271
|
-
|
|
270
|
+
# nest a handful. Public so tests can build a config at the boundary.
|
|
271
|
+
MAX_CARD_DEPTH = 50
|
|
272
272
|
# Bound on non-card nesting inside one card, which keeps the recursive split far
|
|
273
273
|
# below Python's recursion limit even at the card bound.
|
|
274
274
|
_MAX_NODE_DEPTH = 100
|
|
@@ -513,17 +513,17 @@ def _walk_card(
|
|
|
513
513
|
container only.
|
|
514
514
|
|
|
515
515
|
Only a dict carrying a ``type`` key is matched as a card. Subtrees past
|
|
516
|
-
``
|
|
516
|
+
``MAX_CARD_DEPTH`` card levels are recorded in ``frame.gaps.truncation``;
|
|
517
517
|
cards carrying ``_NON_CARD_CHILD_KEYS`` in ``frame.gaps.uncovered``.
|
|
518
518
|
"""
|
|
519
519
|
if not isinstance(card, dict):
|
|
520
520
|
if frame.criteria.can_match_cards():
|
|
521
521
|
frame.gaps.unread.append(jq_prefix)
|
|
522
522
|
return []
|
|
523
|
-
if frame.depth >
|
|
523
|
+
if frame.depth > MAX_CARD_DEPTH:
|
|
524
524
|
logger.warning(
|
|
525
525
|
"Card-search depth bound (%d) exceeded at %s; not descending further",
|
|
526
|
-
|
|
526
|
+
MAX_CARD_DEPTH,
|
|
527
527
|
jq_prefix,
|
|
528
528
|
)
|
|
529
529
|
frame.gaps.truncation.append(jq_prefix)
|
|
@@ -1624,7 +1624,7 @@ class DevTools:
|
|
|
1624
1624
|
Extracted verbatim from the inline branch: rejects env/addon-managed
|
|
1625
1625
|
settings, removes any file override, and reports whether one existed.
|
|
1626
1626
|
"""
|
|
1627
|
-
from ..config import
|
|
1627
|
+
from ..config import reset_global_settings
|
|
1628
1628
|
|
|
1629
1629
|
if origin == "env":
|
|
1630
1630
|
raise_tool_error(
|
|
@@ -1646,7 +1646,7 @@ class DevTools:
|
|
|
1646
1646
|
had_override = origin == "file"
|
|
1647
1647
|
if had_override:
|
|
1648
1648
|
await self._merge_file_override({setting: _REMOVE})
|
|
1649
|
-
|
|
1649
|
+
reset_global_settings()
|
|
1650
1650
|
return {
|
|
1651
1651
|
"success": True,
|
|
1652
1652
|
"data": {
|
|
@@ -1676,8 +1676,8 @@ class DevTools:
|
|
|
1676
1676
|
"""
|
|
1677
1677
|
from ..config import (
|
|
1678
1678
|
BETA_FEATURE_FIELDS,
|
|
1679
|
-
_reset_global_settings,
|
|
1680
1679
|
get_global_settings,
|
|
1680
|
+
reset_global_settings,
|
|
1681
1681
|
)
|
|
1682
1682
|
|
|
1683
1683
|
if value is None:
|
|
@@ -1754,7 +1754,7 @@ class DevTools:
|
|
|
1754
1754
|
mode = "addon"
|
|
1755
1755
|
else:
|
|
1756
1756
|
await self._merge_file_override({setting: coerced})
|
|
1757
|
-
|
|
1757
|
+
reset_global_settings()
|
|
1758
1758
|
mode = "file"
|
|
1759
1759
|
return {
|
|
1760
1760
|
"success": True,
|
|
@@ -36,9 +36,9 @@ from .search.entities import (
|
|
|
36
36
|
_validate_result_field_names,
|
|
37
37
|
)
|
|
38
38
|
from .search.overview import (
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
OVERVIEW_AVAILABLE_FIELDS,
|
|
40
|
+
OVERVIEW_ENTITY_FIELDS,
|
|
41
|
+
OVERVIEW_INDEPENDENT_FIELDS,
|
|
42
42
|
OverviewMixin,
|
|
43
43
|
_OverviewInputs,
|
|
44
44
|
)
|
|
@@ -640,9 +640,9 @@ class SearchTools(ComponentSearchMixin, OverviewMixin, StateMixin):
|
|
|
640
640
|
raise_tool_error(create_validation_error(str(exc), parameter="domains"))
|
|
641
641
|
|
|
642
642
|
requested_fields = set(parsed_fields or [])
|
|
643
|
-
recognized_fields = requested_fields &
|
|
643
|
+
recognized_fields = requested_fields & OVERVIEW_INDEPENDENT_FIELDS
|
|
644
644
|
use_independent_collectors = (
|
|
645
|
-
parsed_fields is not None and not requested_fields &
|
|
645
|
+
parsed_fields is not None and not requested_fields & OVERVIEW_ENTITY_FIELDS
|
|
646
646
|
)
|
|
647
647
|
if use_independent_collectors:
|
|
648
648
|
result = await self._collect_independent_overview(
|
|
@@ -700,7 +700,7 @@ class SearchTools(ComponentSearchMixin, OverviewMixin, StateMixin):
|
|
|
700
700
|
projected = project_fields(
|
|
701
701
|
result,
|
|
702
702
|
parsed_fields,
|
|
703
|
-
available_fields=
|
|
703
|
+
available_fields=OVERVIEW_AVAILABLE_FIELDS,
|
|
704
704
|
)
|
|
705
705
|
sidecar_url = live_sidecar_url()
|
|
706
706
|
if sidecar_url:
|
|
@@ -61,7 +61,7 @@ _LOVELACE_DASHBOARD_PREFIX = "lovelace.dashboards."
|
|
|
61
61
|
# wrapper. The parity invariant (keys == PACKAGES_ONLY_YAML_KEYS, and
|
|
62
62
|
# every value is a real Settings field) is enforced by
|
|
63
63
|
# test_yaml_dashboards.py::test_flag_map_matches_packages_only_keys.
|
|
64
|
-
|
|
64
|
+
YAML_PACKAGES_FLAG_BY_KEY = {
|
|
65
65
|
"automation": "enable_yaml_packages_automation",
|
|
66
66
|
"script": "enable_yaml_packages_script",
|
|
67
67
|
"scene": "enable_yaml_packages_scene",
|
|
@@ -105,12 +105,12 @@ def _disabled_packages_keys(settings: Any) -> list[str]:
|
|
|
105
105
|
irrelevant on the wire.
|
|
106
106
|
|
|
107
107
|
Uses ``getattr`` without a default so a future rename that breaks the
|
|
108
|
-
``
|
|
108
|
+
``YAML_PACKAGES_FLAG_BY_KEY`` → ``Settings`` mapping raises loudly
|
|
109
109
|
instead of silently treating the key as disabled (a dead toggle).
|
|
110
110
|
"""
|
|
111
111
|
return sorted(
|
|
112
112
|
key
|
|
113
|
-
for key, flag in
|
|
113
|
+
for key, flag in YAML_PACKAGES_FLAG_BY_KEY.items()
|
|
114
114
|
if not getattr(settings, flag)
|
|
115
115
|
)
|
|
116
116
|
|
|
@@ -41,11 +41,12 @@ class PythonSandboxExecutionError(PythonSandboxError):
|
|
|
41
41
|
# can carry tokens / passwords / device addresses, and Python's default
|
|
42
42
|
# repr happily embeds dict and list values into KeyError/TypeError text.
|
|
43
43
|
# 240 chars is enough to identify the failure (exception type + a short
|
|
44
|
-
# snippet) without pasting the input config back to the caller.
|
|
45
|
-
|
|
44
|
+
# snippet) without pasting the input config back to the caller. Public so
|
|
45
|
+
# tests can check the cap.
|
|
46
|
+
EXECUTION_ERROR_TEXT_LIMIT = 240
|
|
46
47
|
|
|
47
48
|
|
|
48
|
-
def _truncate_for_error(text: str, limit: int =
|
|
49
|
+
def _truncate_for_error(text: str, limit: int = EXECUTION_ERROR_TEXT_LIMIT) -> str:
|
|
49
50
|
if len(text) <= limit:
|
|
50
51
|
return text
|
|
51
52
|
return text[: limit - 3] + "..."
|
|
@@ -233,8 +234,9 @@ BLOCKED_FUNCTIONS = {
|
|
|
233
234
|
# transforms — type checks, length, numeric/string coercion, simple
|
|
234
235
|
# collection helpers. Expanding this list is fine if another pure builtin
|
|
235
236
|
# is genuinely needed; adding anything that touches the filesystem, network,
|
|
236
|
-
# or interpreter state is not.
|
|
237
|
-
|
|
237
|
+
# or interpreter state is not. Public, like SAFE_METHODS, so tests can check
|
|
238
|
+
# the security documentation against it.
|
|
239
|
+
SAFE_BUILTINS: dict[str, Any] = {
|
|
238
240
|
"isinstance": isinstance,
|
|
239
241
|
"len": len,
|
|
240
242
|
"range": range,
|
|
@@ -383,7 +385,7 @@ def safe_execute_expression(
|
|
|
383
385
|
)
|
|
384
386
|
|
|
385
387
|
safe_globals: dict[str, Any] = {
|
|
386
|
-
"__builtins__": dict(
|
|
388
|
+
"__builtins__": dict(SAFE_BUILTINS),
|
|
387
389
|
"__name__": "__main__",
|
|
388
390
|
"__doc__": None,
|
|
389
391
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256
RENAMED
|
File without changes
|
{ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-9.3.0.dev3503 → ha_mcp_dev-9.3.0.dev3509}/src/ha_mcp/_vendor/fastmcp/__init__.py
RENAMED
|
File without changes
|