ha-mcp-dev 9.0.0.dev3204__tar.gz → 9.0.0.dev3208__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/PKG-INFO +1 -1
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/pyproject.toml +1 -1
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/pyproject.toml.orig +1 -1
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/client/websocket_client.py +5 -5
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/config_meta.py +2 -3
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/config_overrides.py +4 -4
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/config_settings.py +2 -19
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/server.py +1 -49
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/server_tool_text.py +21 -18
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/_handlers_advanced.py +9 -10
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/_handlers_backups.py +1 -7
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/_supervisor.py +7 -8
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/az.json +0 -6
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/cs.json +0 -6
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/de.json +0 -6
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/en.json +1 -7
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/eo.json +0 -6
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/es.json +0 -6
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/fr.json +0 -6
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/it.json +0 -6
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/ko.json +0 -6
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/nl.json +0 -6
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/pl.json +0 -6
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/ru.json +0 -6
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/sv.json +0 -6
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/tlh.json +0 -4
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -6
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -6
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +1 -1
- ha_mcp_dev-9.0.0.dev3208/src/ha_mcp/tools/backup.py +795 -0
- ha_mcp_dev-9.0.0.dev3208/src/ha_mcp/tools/backup_snapshot.py +871 -0
- ha_mcp_dev-9.0.0.dev3208/src/ha_mcp/tools/backup_snapshot_restore.py +395 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/hacs_registration.py +10 -3
- ha_mcp_dev-9.0.0.dev3204/src/ha_mcp/tools/backup.py +0 -2205
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/LICENSE +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev_security.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/mixins/skills.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/mixins/extensions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/skills/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/skills/_constants.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/skills/_resources.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/skills/_snapshot.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/skills/_source.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/skills/client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/skills/extension.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/skills/models.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/_request_clock.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/app_discovery.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/auth/iss_stamp.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/backup_dashboards.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/backup_diff.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/backup_entity_ids.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/backup_helper_target.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/backup_integrations.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/backup_tags.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/backup_zones.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/client/admin_routes.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/client/error_log_journald.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/client/models.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/config_backup.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/config_registry.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/http_transport.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/image_info.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/policy/decision_pin.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/policy/decisions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/policy/events.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/policy/mrtr.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/policy/server_channels.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/server_instructions.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/server_lifespan.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/_handlers_oauth_callbacks.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/settings_js/10_oauth_callbacks.js +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/addon_connection_hints.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/area_messages.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/backup_access.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/backup_on_demand.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/blueprint_sources.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/bug_report_config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/bug_report_templates.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/coercion.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/component_helper_collections.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_entry_backup.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_file_visibility.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_helpers/create.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_helpers/icon_route.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_helpers/update.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_write_errors.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/config_write_helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/core_contract.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/dashboard_card_describe.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/dev_backup.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/device_enrichment.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/energy_preferences.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/entity_registration.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/entity_removal.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/entity_update_fields.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/flow_helper_lookup.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/helper_flows.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/history_response.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/integration_entry_state.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/log_sources_logbook.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/recorder_errors.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/response_helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/scene_discovery.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/search/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/search/base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/search/component.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/search/entities.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/search/legacy.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/search/modes.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/search/overview.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/search/response.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/search/state.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/server_version.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/statistics_calendar.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/statistics_helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/statistics_resets.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/system_restart.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tool_hints.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/tools/ws_waiters.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/transforms/compact_params.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/transforms/component_helpers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/transforms/component_search.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/transforms/write_tool_note.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/dashboard_patch.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/mcp_client_host.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/registry_update_lock.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/visibility/config_files.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/visibility/identifier_aliases.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/visibility/resolver.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "9.0.0.
|
|
7
|
+
version = "9.0.0.dev3208"
|
|
8
8
|
description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13,<3.15"
|
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "9.0.0.
|
|
7
|
+
version = "9.0.0.dev3208"
|
|
8
8
|
description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
# Upper bound widened to <3.15 so the package installs on Home Assistant's
|
|
@@ -282,12 +282,12 @@ class WebSocketConnectionState:
|
|
|
282
282
|
future.set_exception(HomeAssistantConnectionError(message))
|
|
283
283
|
self._event_responses.clear()
|
|
284
284
|
|
|
285
|
-
# Drop any subscription queues
|
|
286
|
-
#
|
|
287
|
-
#
|
|
288
|
-
#
|
|
285
|
+
# Drop any subscription queues. ``shutdown`` rather than just clearing
|
|
286
|
+
# the dict, so blocked ``queue.get()`` awaiters unblock instead of
|
|
287
|
+
# hanging; not ``immediate``, so a reader still gets the events that
|
|
288
|
+
# arrived before the close, then ``QueueShutDown`` (3.13).
|
|
289
289
|
for queue in self._subscription_queues.values():
|
|
290
|
-
queue.shutdown(
|
|
290
|
+
queue.shutdown()
|
|
291
291
|
self._subscription_queues.clear()
|
|
292
292
|
# Subscriptions die with the socket, and ids restart on the next one.
|
|
293
293
|
self._abandoned_subscriptions.clear()
|
|
@@ -50,14 +50,13 @@ class AppOption:
|
|
|
50
50
|
``start.py`` exports the option to the setting's env var. An option that
|
|
51
51
|
only some flavors declare is exported only when ``options.json`` has the
|
|
52
52
|
key: an exported value marks the setting as app-managed in the web UI,
|
|
53
|
-
and Supervisor
|
|
53
|
+
and Supervisor drops a key the flavor does not declare (with only a log
|
|
54
|
+
warning), so a save of it would silently not persist.
|
|
54
55
|
"""
|
|
55
56
|
|
|
56
57
|
flavors: tuple[Literal["stable", "dev"], ...] = ("stable", "dev")
|
|
57
58
|
# The dev flavor's default when it differs from the field default.
|
|
58
59
|
dev_default: bool | None = None
|
|
59
|
-
# Supervisor requires the option; every other option is optional ("?").
|
|
60
|
-
required: bool = False
|
|
61
60
|
|
|
62
61
|
|
|
63
62
|
@dataclass(frozen=True)
|
|
@@ -484,10 +484,10 @@ def _apply_advanced_overrides(settings: "Settings") -> None:
|
|
|
484
484
|
registry) are NEVER applied — chicken-and-egg safeguard for
|
|
485
485
|
connection settings.
|
|
486
486
|
|
|
487
|
-
Addon-mode behavior:
|
|
488
|
-
|
|
489
|
-
For those, ``start.py`` exports the env var on every boot and the
|
|
490
|
-
env-var-wins check
|
|
487
|
+
Addon-mode behavior: the advanced fields that are also app options
|
|
488
|
+
(``ADDON_SYNCED_ADVANCED_FIELDS``) are in the addon ``config.yaml``
|
|
489
|
+
schemas. For those, ``start.py`` exports the env var on every boot and the
|
|
490
|
+
env-var-wins check in ``_apply_one_advanced_override`` skips them. All other advanced
|
|
491
491
|
fields (code_mode_* sub-numerics, mcp_server_*, log_level, debug,
|
|
492
492
|
enabled_tool_modules, fuzzy_threshold, etc.) are NOT in any addon
|
|
493
493
|
schema; the override file is the authoritative source and applies
|
|
@@ -244,17 +244,6 @@ class Settings(BaseSettings):
|
|
|
244
244
|
),
|
|
245
245
|
] = Field(0, alias="HA_TOOL_CONCURRENCY")
|
|
246
246
|
|
|
247
|
-
# Backup tool configuration. The app requires this option.
|
|
248
|
-
backup_hint: Annotated[
|
|
249
|
-
str,
|
|
250
|
-
Setting(
|
|
251
|
-
surface="advanced",
|
|
252
|
-
section="operations",
|
|
253
|
-
app=AppOption(required=True),
|
|
254
|
-
choices=("strong", "normal", "weak", "auto"),
|
|
255
|
-
),
|
|
256
|
-
] = Field("normal", alias="BACKUP_HINT")
|
|
257
|
-
|
|
258
247
|
# WebSocket configuration (essential for async operations)
|
|
259
248
|
enable_websocket: Annotated[
|
|
260
249
|
bool,
|
|
@@ -530,7 +519,7 @@ class Settings(BaseSettings):
|
|
|
530
519
|
# generic Server Settings feature list, while /api/settings/features
|
|
531
520
|
# still serves and persists it for the Policies-tab toggle. It is an app
|
|
532
521
|
# option because that toggle routes its save through Supervisor in
|
|
533
|
-
# add-on mode, which
|
|
522
|
+
# add-on mode, which drops any option the schema does not declare.
|
|
534
523
|
enable_security_policy_tool: Annotated[
|
|
535
524
|
bool, Setting(surface="feature", app=_ALL_FLAVORS)
|
|
536
525
|
] = Field(False, alias="ENABLE_SECURITY_POLICY_TOOL")
|
|
@@ -754,7 +743,7 @@ class Settings(BaseSettings):
|
|
|
754
743
|
# snapshots before deleting old ones, but it cannot forge a backup's
|
|
755
744
|
# HA-stamped creation date. 0 disables the age floor (still gated by
|
|
756
745
|
# enable_snapshot_delete + the newest-snapshot / automatic-backup
|
|
757
|
-
# guards enforced in tools/
|
|
746
|
+
# guards enforced in tools/backup_snapshot.py).
|
|
758
747
|
snapshot_delete_min_age_days: Annotated[
|
|
759
748
|
int, Setting(surface="backup", app=_ALL_FLAVORS, range=(0, 365))
|
|
760
749
|
] = Field(7, alias="SNAPSHOT_DELETE_MIN_AGE_DAYS")
|
|
@@ -886,12 +875,6 @@ class Settings(BaseSettings):
|
|
|
886
875
|
"""Accept a log level in any case."""
|
|
887
876
|
return _one_of(cls, "log_level", v.upper())
|
|
888
877
|
|
|
889
|
-
@field_validator("backup_hint")
|
|
890
|
-
@classmethod
|
|
891
|
-
def validate_backup_hint(cls, v: str) -> str:
|
|
892
|
-
"""Accept a backup hint in any case."""
|
|
893
|
-
return _one_of(cls, "backup_hint", v.lower())
|
|
894
|
-
|
|
895
878
|
model_config = SettingsConfigDict(
|
|
896
879
|
# Absolute, and the same file load_dotenv already resolved above. A
|
|
897
880
|
# relative ".env" here would be a second, independent read that
|
|
@@ -396,50 +396,6 @@ class HomeAssistantSmartMCPServer:
|
|
|
396
396
|
# unnecessarily trim context for other clients.
|
|
397
397
|
_SEARCH_DESCRIPTION_OVERRIDES: ClassVar[dict[str, str]] = {}
|
|
398
398
|
|
|
399
|
-
@staticmethod
|
|
400
|
-
def _lite_docstring_tokens() -> dict[str, str]:
|
|
401
|
-
"""Operator-tuned values interpolated into the lite descriptions.
|
|
402
|
-
|
|
403
|
-
``_LITE_DOCSTRINGS`` is a static ``ClassVar``, but not every full
|
|
404
|
-
description it replaces is static: ``ha_manage_backup``'s is an
|
|
405
|
-
f-string built in ``register_backup_tools()`` that interpolates
|
|
406
|
-
``_get_backup_hint_text()`` from ``BACKUP_HINT``
|
|
407
|
-
(strong/normal/weak). Hard-coding one wording into the lite text
|
|
408
|
-
would make that setting a silent no-op whenever lite mode is on —
|
|
409
|
-
the add-on UI would confirm a Backup-hint change that changed
|
|
410
|
-
nothing. So the lite values carry ``{token}`` placeholders and are
|
|
411
|
-
resolved here, reading the same env var at the same point in
|
|
412
|
-
startup the full description does.
|
|
413
|
-
"""
|
|
414
|
-
# Local import: same lazy-seam pattern as backup_manager's
|
|
415
|
-
# _normalize_config_for_roundtrip import. It does NOT keep the tools
|
|
416
|
-
# package off the module-load path — server.py already imports
|
|
417
|
-
# .tools.helpers at module scope — what it avoids is pulling in
|
|
418
|
-
# tools.backup, which is the actual reason to keep it local.
|
|
419
|
-
from .tools.backup import _get_backup_hint_text
|
|
420
|
-
|
|
421
|
-
return {"backup_hint_text": _get_backup_hint_text()}
|
|
422
|
-
|
|
423
|
-
@classmethod
|
|
424
|
-
def _resolve_lite_docstrings(cls) -> dict[str, str]:
|
|
425
|
-
"""Return ``_LITE_DOCSTRINGS`` with its placeholders filled in.
|
|
426
|
-
|
|
427
|
-
Uses ``str.replace`` rather than ``str.format`` so the descriptions
|
|
428
|
-
stay free to contain literal braces (Jinja examples, JSON) without
|
|
429
|
-
a stray ``{`` turning into a ``KeyError`` at startup. An unknown
|
|
430
|
-
placeholder is left verbatim rather than raising —
|
|
431
|
-
``test_every_placeholder_in_the_map_is_resolvable`` is what catches a
|
|
432
|
-
typo'd token, at test time instead of in a user's tool catalog.
|
|
433
|
-
"""
|
|
434
|
-
tokens = cls._lite_docstring_tokens()
|
|
435
|
-
resolved: dict[str, str] = {}
|
|
436
|
-
for name, lite in cls._LITE_DOCSTRINGS.items():
|
|
437
|
-
filled = lite
|
|
438
|
-
for token, value in tokens.items():
|
|
439
|
-
filled = filled.replace("{" + token + "}", value)
|
|
440
|
-
resolved[name] = filled
|
|
441
|
-
return resolved
|
|
442
|
-
|
|
443
399
|
def _apply_lite_docstrings(self) -> None:
|
|
444
400
|
"""Swap heavy tool descriptions for shorter variants if enabled.
|
|
445
401
|
|
|
@@ -450,10 +406,6 @@ class HomeAssistantSmartMCPServer:
|
|
|
450
406
|
``ha_get_skill_guide``. Tools not in the
|
|
451
407
|
mapping pass through unchanged.
|
|
452
408
|
|
|
453
|
-
Descriptions are resolved through ``_resolve_lite_docstrings`` so
|
|
454
|
-
operator-tuned text (``BACKUP_HINT``) survives the swap instead of
|
|
455
|
-
being pinned to whatever wording the static map happened to carry.
|
|
456
|
-
|
|
457
409
|
Emits a startup WARNING when enabled so non-addon users (Docker,
|
|
458
410
|
uvx, pip) see the trade-off in their logs — the addon UI surfaces
|
|
459
411
|
the same warning via the toggle description. A second WARNING is
|
|
@@ -488,7 +440,7 @@ class HomeAssistantSmartMCPServer:
|
|
|
488
440
|
|
|
489
441
|
try:
|
|
490
442
|
self.mcp.add_transform(
|
|
491
|
-
LiteDocstringsTransform(replacements=self.
|
|
443
|
+
LiteDocstringsTransform(replacements=self._LITE_DOCSTRINGS)
|
|
492
444
|
)
|
|
493
445
|
except Exception:
|
|
494
446
|
logger.exception("Failed to apply LiteDocstringsTransform")
|
|
@@ -388,17 +388,14 @@ LITE_DOCSTRINGS: dict[str, str] = {
|
|
|
388
388
|
"entity_id over device_id, impact analysis before renaming — see "
|
|
389
389
|
"ha_get_skill_guide."
|
|
390
390
|
),
|
|
391
|
-
# ha_manage_backup: the
|
|
392
|
-
#
|
|
393
|
-
#
|
|
394
|
-
#
|
|
395
|
-
# comment, so the ratio is pinned by
|
|
396
|
-
# test_backup_lite_description_stays_substantially_smaller instead,
|
|
397
|
-
# which measures both sides at test time.
|
|
391
|
+
# ha_manage_backup: the lite value is a fraction of the full
|
|
392
|
+
# description. test_backup_lite_description_stays_substantially_smaller
|
|
393
|
+
# bounds it (under 45% of the full text, over 900 chars) and measures
|
|
394
|
+
# both sides at test time, so no figure is quoted here.
|
|
398
395
|
#
|
|
399
396
|
# It was the largest full description in the GATEWAY catalog this was
|
|
400
|
-
# measured against, not in the repo: ha_get_system_health
|
|
401
|
-
#
|
|
397
|
+
# measured against, not in the repo: ha_get_system_health is larger
|
|
398
|
+
# and unmapped.
|
|
402
399
|
# The reduction is smaller than pure compression would give because
|
|
403
400
|
# the safety content below is kept inline. The routing matrix STAYS —
|
|
404
401
|
# the `action` parameter's own Field description says "Valid (scope,
|
|
@@ -418,19 +415,25 @@ LITE_DOCSTRINGS: dict[str, str] = {
|
|
|
418
415
|
# destructiveHint is set on this tool, so the lite text keeps every
|
|
419
416
|
# irreversibility marker inline rather than deferring it: the
|
|
420
417
|
# restart, the confirm, the human-only enable_snapshot_delete, and
|
|
421
|
-
# each individual delete guard. It also keeps the
|
|
422
|
-
#
|
|
423
|
-
#
|
|
424
|
-
#
|
|
418
|
+
# each individual delete guard. It also keeps the diagnostics that
|
|
419
|
+
# have no fallback anywhere else: a slow `create` is not a hang
|
|
420
|
+
# (retrying starts a second backup), and the enable_auto_backup
|
|
421
|
+
# empty-list ambiguity.
|
|
425
422
|
"ha_manage_backup": (
|
|
426
423
|
"Manage Home Assistant backups: full HA snapshots "
|
|
427
424
|
"(`scope='snapshot'`) and per-entity auto-backups of agent edits "
|
|
428
425
|
"(`scope='edits'`). Pick the scope first — the wrong one routes "
|
|
429
426
|
"through the wrong code path.\n\n"
|
|
430
|
-
"`scope='snapshot'` actions: `create` (
|
|
427
|
+
"`scope='snapshot'` actions: `create` (a full backup with Home "
|
|
428
|
+
"Assistant's automatic-backup settings, counted by their "
|
|
429
|
+
"retention, or on the default location without automatic-backup "
|
|
430
|
+
"locations, holding the apps those settings select; any "
|
|
431
|
+
"`include_*` makes a custom backup of just those "
|
|
432
|
+
"parts instead; slow on a large "
|
|
431
433
|
"instance — progress heartbeats are sent while waiting, so a "
|
|
432
434
|
"long wait is not a hang; retrying starts a SECOND backup), "
|
|
433
|
-
"`list`, `restore` (**restarts HA
|
|
435
|
+
"`list`, `restore` (**restarts HA**; `safety_backup=True`, off "
|
|
436
|
+
"by default, first backs up what the restore replaces), `delete` (needs "
|
|
434
437
|
"`confirm=True`; disabled until a human sets "
|
|
435
438
|
"`enable_snapshot_delete` — an agent cannot enable it. Even then "
|
|
436
439
|
"a delete is refused for scheduled/automatic backups, for "
|
|
@@ -439,7 +442,7 @@ LITE_DOCSTRINGS: dict[str, str] = {
|
|
|
439
442
|
"remaining).\n\n"
|
|
440
443
|
"`scope='edits'` actions: `create` (needs `domain` + "
|
|
441
444
|
"`entity_id`), `list`, `view`, `diff`, `restore` (takes a fresh "
|
|
442
|
-
"
|
|
445
|
+
"per-entity backup first; no HA restart), `delete`. Automatic "
|
|
443
446
|
"capture on write is gated by `enable_auto_backup`, so an empty "
|
|
444
447
|
'`list` means "nothing saved" OR "the toggle is off" — check it '
|
|
445
448
|
"before concluding there is nothing to restore. Either way "
|
|
@@ -447,8 +450,8 @@ LITE_DOCSTRINGS: dict[str, str] = {
|
|
|
447
450
|
"the request is explicit.\n\n"
|
|
448
451
|
"Use `edits` to undo a recent agent edit to an "
|
|
449
452
|
"automation/script/scene/dashboard/helper; use `snapshot` for "
|
|
450
|
-
"system-wide recovery
|
|
451
|
-
"
|
|
453
|
+
"system-wide recovery. A snapshot backup is the user's call: ask "
|
|
454
|
+
"before making one, and make it only when they say so.\n\n"
|
|
452
455
|
"For which recovery path fits which failure, what an archive "
|
|
453
456
|
"actually contains, and the encryption key a restore needs, see "
|
|
454
457
|
"ha_get_skill_guide (`references/backups.md`)."
|
{ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/_handlers_advanced.py
RENAMED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
Factory returning the ``get_advanced_settings`` / ``save_advanced_settings``
|
|
4
4
|
handlers over the ``ADVANCED_SETTINGS_FIELDS`` registry. Most advanced
|
|
5
5
|
fields write to the shared ``feature_flags.json`` override file;
|
|
6
|
-
``ADDON_SYNCED_ADVANCED_FIELDS`` (
|
|
7
|
-
|
|
8
|
-
through the Supervisor add-on options in add-on mode instead.
|
|
6
|
+
``ADDON_SYNCED_ADVANCED_FIELDS`` (the advanced fields that are also app
|
|
7
|
+
options) route through the Supervisor add-on options in add-on mode instead.
|
|
9
8
|
|
|
10
9
|
Handlers are module-level (own C901 budget); ``build_advanced_handlers``
|
|
11
10
|
binds ``server`` into request-only wrappers.
|
|
@@ -136,8 +135,8 @@ async def _get_advanced_settings(
|
|
|
136
135
|
Mirrors ``_get_feature_flags`` / ``_get_backup_config`` but for the
|
|
137
136
|
``ADVANCED_SETTINGS_FIELDS`` registry. Most advanced fields write to
|
|
138
137
|
``feature_flags.json`` via the shared override file in either deployment
|
|
139
|
-
mode. ``ADDON_SYNCED_ADVANCED_FIELDS`` (
|
|
140
|
-
|
|
138
|
+
mode. ``ADDON_SYNCED_ADVANCED_FIELDS`` (the advanced fields that are
|
|
139
|
+
also app options) are an exception: in addon mode
|
|
141
140
|
they have ``origin="addon"`` (editable) and saves route through Supervisor
|
|
142
141
|
so the add-on Configuration tab and the web UI share state.
|
|
143
142
|
"""
|
|
@@ -332,7 +331,7 @@ def _validate_one_advanced_field(
|
|
|
332
331
|
status_code=409,
|
|
333
332
|
),
|
|
334
333
|
)
|
|
335
|
-
# Addon-synced fields (
|
|
334
|
+
# Addon-synced fields (``ADDON_SYNCED_ADVANCED_FIELDS``) are editable in
|
|
336
335
|
# addon mode even though their env vars are set — start.py rewrites them
|
|
337
336
|
# from /data/options.json on every boot, so route the write through
|
|
338
337
|
# Supervisor instead of the override file.
|
|
@@ -404,8 +403,8 @@ async def _save_advanced_addon(
|
|
|
404
403
|
f"into separate POSTs ({sorted(file_only)})."
|
|
405
404
|
),
|
|
406
405
|
suggestions=[
|
|
407
|
-
"Submit addon-synced fields (e.g.
|
|
408
|
-
"
|
|
406
|
+
"Submit addon-synced fields (e.g. verify_ssl, "
|
|
407
|
+
"ha_tool_concurrency) and override-file fields in separate "
|
|
409
408
|
"save requests.",
|
|
410
409
|
],
|
|
411
410
|
),
|
|
@@ -530,8 +529,8 @@ async def _save_advanced_settings(
|
|
|
530
529
|
) -> JSONResponse:
|
|
531
530
|
"""Persist UI-edited advanced settings.
|
|
532
531
|
|
|
533
|
-
Addon-synced fields (``
|
|
534
|
-
|
|
532
|
+
Addon-synced fields (``ADDON_SYNCED_ADVANCED_FIELDS``) in add-on mode
|
|
533
|
+
route through Supervisor; everything else
|
|
535
534
|
atomically merges into the shared ``feature_flags.json`` override file.
|
|
536
535
|
Either sink responds with ``restart_required=True`` (most advanced fields
|
|
537
536
|
gate one-time startup paths).
|
{ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/_handlers_backups.py
RENAMED
|
@@ -476,7 +476,7 @@ async def _save_backup_config_addon(
|
|
|
476
476
|
"""Add-on-mode branch of ``_save_backup_config``: merge ``clean`` into the
|
|
477
477
|
Supervisor add-on options (full-replacement) and return.
|
|
478
478
|
|
|
479
|
-
``start.py`` re-derives env vars from
|
|
479
|
+
``start.py`` re-derives env vars from ``/data/options.json`` on the next add-on
|
|
480
480
|
boot, but the actual restart is fired by the user's global Restart Add-on
|
|
481
481
|
button — not here — so ``restart_required=True`` and no auto-restart.
|
|
482
482
|
"""
|
|
@@ -489,12 +489,6 @@ async def _save_backup_config_addon(
|
|
|
489
489
|
code=ErrorCode.INTERNAL_ERROR,
|
|
490
490
|
status=500,
|
|
491
491
|
)
|
|
492
|
-
# Merge ``clean`` into the *full* current options before posting.
|
|
493
|
-
# Supervisor validates against the addon schema and rejects any body
|
|
494
|
-
# missing a required key (notably ``backup_hint`` on the production /
|
|
495
|
-
# dev manifests). A previous version shipped just the auto-backup
|
|
496
|
-
# fields, producing ``addon_configuration_invalid_error: Missing option
|
|
497
|
-
# 'backup_hint' in root`` from supervisor and a confusing 400 in the UI.
|
|
498
492
|
ok, sup_err = await _supervisor._supervisor_merge_and_post_options(
|
|
499
493
|
server.settings.verify_ssl, clean
|
|
500
494
|
)
|
|
@@ -4,9 +4,9 @@ Groups the two Supervisor concerns the settings handlers depend on:
|
|
|
4
4
|
|
|
5
5
|
- **Options merge/post** (``_supervisor_fetch_current_options`` /
|
|
6
6
|
``_supervisor_merge_and_post_options``) — Supervisor's
|
|
7
|
-
``/addons/self/options`` POST
|
|
8
|
-
|
|
9
|
-
options before posting.
|
|
7
|
+
``/addons/self/options`` POST replaces the stored options in full (keys
|
|
8
|
+
left out fall back to their defaults), so a partial edit must be merged
|
|
9
|
+
into the current options before posting.
|
|
10
10
|
- **Self-restart** (``_schedule_supervisor_self_restart``) — a
|
|
11
11
|
fire-and-forget ``/addons/self/restart`` POST scheduled after the
|
|
12
12
|
response has flushed, so the browser isn't served a 5xx by the ingress
|
|
@@ -74,9 +74,9 @@ async def _supervisor_fetch_current_options(
|
|
|
74
74
|
) -> tuple[dict[str, Any], _SupervisorOptionsError | None]:
|
|
75
75
|
"""GET ``/addons/self/info`` and return the current options dict.
|
|
76
76
|
|
|
77
|
-
Supervisor's ``/addons/self/options`` POST
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
Supervisor's ``/addons/self/options`` POST replaces the stored options
|
|
78
|
+
in full: any key left out falls back to its ``config.yaml`` default.
|
|
79
|
+
We can't ship a partial PATCH of just the
|
|
80
80
|
fields the user changed, so callers must merge their changes into
|
|
81
81
|
the full current options before posting. Mirrors the pattern in
|
|
82
82
|
``homeassistant-addon/start.py::maybe_persist_secret_path`` which
|
|
@@ -146,8 +146,7 @@ async def _supervisor_merge_and_post_options(
|
|
|
146
146
|
Necessary because supervisor's POST is full-replacement (see
|
|
147
147
|
:func:`_supervisor_fetch_current_options`). Without this merge, a
|
|
148
148
|
POST that only includes a handful of fields the user edited
|
|
149
|
-
drops every other key
|
|
150
|
-
and supervisor rejects with a 400 ``addon_configuration_invalid_error``.
|
|
149
|
+
drops every other key, resetting those options to their defaults.
|
|
151
150
|
|
|
152
151
|
Returns ``(success, error)`` where ``error`` is a
|
|
153
152
|
:class:`_SupervisorOptionsError`. Transport failures (token missing,
|
{ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/az.json
RENAMED
|
@@ -474,12 +474,6 @@
|
|
|
474
474
|
"advanced.enable_history_query_guardrails.help": "Obyekt sayı və vaxt aralığı üzrə ehtiyatlı limitləri aşan qeydiyyatçı sorğularını rədd edir. Standart olaraq deaktivdir.",
|
|
475
475
|
"advanced.ha_tool_concurrency.label": "Home Assistant alətlərinin paralel icrası",
|
|
476
476
|
"advanced.ha_tool_concurrency.help": "Bütün sessiyalar üzrə xarici Home Assistant alət çağırışlarında əlavə məhdudiyyət. Daxili REST, WebSocket və hər alət üzrə paylanma eynizmətliliyi (concurrency) dəyişməz qalır. 0 məhdudiyyətsiz davranışı qoruyur. Tutum üçün gözləyən çağırış 60 saniyədən sonra uğursuz olur.",
|
|
477
|
-
"advanced.backup_hint.label": "Ehtiyat nüsxə ipucu səviyyəsi",
|
|
478
|
-
"advanced.backup_hint.help": "Riskli dəyişikliklərdən əvvəl süni intellekt köməkçilərinə tam Home Assistant ehtiyat nüsxəsini təklif etməyin nə qədər güclü şəkildə bildirildiyi. O, yalnız bu ipucunu dəyişdirir; avtomatik redaktə ehtiyat nüsxələrinin öz parametrləri var.",
|
|
479
|
-
"advanced.backup_hint.choices.strong": "Güclü",
|
|
480
|
-
"advanced.backup_hint.choices.normal": "Normal",
|
|
481
|
-
"advanced.backup_hint.choices.weak": "Zəif",
|
|
482
|
-
"advanced.backup_hint.choices.auto": "Avtomatik",
|
|
483
477
|
"advanced.dashboard_screenshot_engine_url.label": "İdarə panelinin ekran görüntüsü mühərrikinin URL-i",
|
|
484
478
|
"advanced.dashboard_screenshot_engine_url.help": "Ekran görüntüsü mühərrikinin əsas URL-i. Supervisor vasitəsilə avtomatik aşkarlama üçün boş saxlayın. Dərhal tətbiq edilir.",
|
|
485
479
|
"advanced.enable_websocket.label": "WebSocket-i aktivləşdir",
|
{ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/cs.json
RENAMED
|
@@ -474,12 +474,6 @@
|
|
|
474
474
|
"advanced.enable_history_query_guardrails.help": "Zamítat dotazy do záznamu (recorder), které překračují konzervativní limity entit a časového rozsahu. Ve výchozím nastavení vypnuto.",
|
|
475
475
|
"advanced.ha_tool_concurrency.label": "Souběžnost nástrojů Home Assistant",
|
|
476
476
|
"advanced.ha_tool_concurrency.help": "Volitelný limit pro vnější volání nástrojů Home Assistant napříč všemi relacemi. Vnitřní souběh pro REST, WebSocket a rozbočení pro jednotlivé nástroje zůstává nezměněn. 0 zachovává neomezené chování. Volání čekající na kapacitu selže po 60 sekundách.",
|
|
477
|
-
"advanced.backup_hint.label": "Úroveň nápovědy zálohování",
|
|
478
|
-
"advanced.backup_hint.help": "Jak důrazně jsou asistenti AI vyzýváni k doporučení úplné zálohy Home Assistant před rizikovými změnami. Mění pouze tuto nápovědu; automatické zálohy úprav mají své vlastní nastavení.",
|
|
479
|
-
"advanced.backup_hint.choices.strong": "Silná",
|
|
480
|
-
"advanced.backup_hint.choices.normal": "Normální",
|
|
481
|
-
"advanced.backup_hint.choices.weak": "Slabá",
|
|
482
|
-
"advanced.backup_hint.choices.auto": "Automatická",
|
|
483
477
|
"advanced.dashboard_screenshot_engine_url.label": "URL adresa enginu pro snímky obrazovky panelu",
|
|
484
478
|
"advanced.dashboard_screenshot_engine_url.help": "Základní URL enginu pro snímky obrazovky. Ponechte prázdné pro automatické zjišťování Supervisor. Platí okamžitě.",
|
|
485
479
|
"advanced.enable_websocket.label": "Povolit WebSocket",
|
{ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/de.json
RENAMED
|
@@ -474,12 +474,6 @@
|
|
|
474
474
|
"advanced.enable_history_query_guardrails.help": "Recorder-Abfragen ablehnen, die konservative Entitäts- und Zeitbereichsbudgets überschreiten. Standardmäßig deaktiviert.",
|
|
475
475
|
"advanced.ha_tool_concurrency.label": "Home-Assistant-Tool-Gleichzeitigkeit",
|
|
476
476
|
"advanced.ha_tool_concurrency.help": "Optionale Begrenzung für äußere Home Assistant-Tool-Aufrufe über alle Sitzungen hinweg. Interne REST-, WebSocket- und tool-spezifische Fan-Out-Gleichzeitigkeit bleibt unverändert. 0 belässt das Verhalten unbegrenzt. Ein Aufruf, der auf Kapazität wartet, schlägt nach 60 Sekunden fehl.",
|
|
477
|
-
"advanced.backup_hint.label": "Backup-Hinweisstufe",
|
|
478
|
-
"advanced.backup_hint.help": "Wie nachdrücklich KI-Assistenten angewiesen werden, vor riskanten Änderungen ein vollständiges Home Assistant-Backup vorzuschlagen. Ändert nur diesen Hinweis; automatische Bearbeitungs-Backups haben ihre eigene Einstellung.",
|
|
479
|
-
"advanced.backup_hint.choices.strong": "Stark",
|
|
480
|
-
"advanced.backup_hint.choices.normal": "Normal",
|
|
481
|
-
"advanced.backup_hint.choices.weak": "Schwach",
|
|
482
|
-
"advanced.backup_hint.choices.auto": "Automatisch",
|
|
483
477
|
"advanced.dashboard_screenshot_engine_url.label": "Dashboard-Screenshot-Engine-URL",
|
|
484
478
|
"advanced.dashboard_screenshot_engine_url.help": "Basis-URL der Screenshot-Engine. Lasse leer für Supervisor-Auto-Discovery. Wirkt sofort.",
|
|
485
479
|
"advanced.enable_websocket.label": "WebSocket aktivieren",
|
{ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/en.json
RENAMED
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
"features.enable_code_mode.label": "Enable custom tool sandbox (beta)",
|
|
161
161
|
"features.enable_code_mode.help": "Beta feature. Enables the ha_manage_custom_tool tool, which lets AI assistants create, run, save, and delete custom Python code in a secure sandbox when no built-in tool can handle the request. Code runs in an isolated interpreter with no filesystem or arbitrary network access. Sandbox code can hit the HA REST API (api_get/api_post), send WebSocket commands (ws_send), call existing MCP tools (call_tool), or remove a saved tool (delete_saved_tool). Saved tools persist to /data/saved_tools.json by default so they survive app (add-on) restarts, and are visible to any client that can connect. See docs/beta.md for known limitations. Requires restart to take effect. REQUIRES the master \"Enable beta features\" toggle above (and in the web UI) to be on — otherwise this sub-flag is ignored at runtime regardless of its value here.",
|
|
162
162
|
"features.enable_lite_docstrings.label": "Enable lite tool docstrings (beta)",
|
|
163
|
-
"features.enable_lite_docstrings.help": "Beta feature. Replaces the docstrings on 15 heavy ha-mcp tools (ha_config_get_automation, ha_config_set_automation, ha_config_get_script, ha_config_set_script, ha_config_get_scene, ha_config_set_scene, ha_config_list_helpers, ha_config_set_helper, ha_config_get_dashboard, ha_config_set_dashboard, ha_call_service, ha_config_set_yaml, ha_search, ha_manage_backup, ha_report_issue) with shorter variants that defer schema and example detail to the ha_get_skill_guide tool (or its skill:// resource). One exception: ha_report_issue defers to the instructions field of its own response instead.
|
|
163
|
+
"features.enable_lite_docstrings.help": "Beta feature. Replaces the docstrings on 15 heavy ha-mcp tools (ha_config_get_automation, ha_config_set_automation, ha_config_get_script, ha_config_set_script, ha_config_get_scene, ha_config_set_scene, ha_config_list_helpers, ha_config_set_helper, ha_config_get_dashboard, ha_config_set_dashboard, ha_call_service, ha_config_set_yaml, ha_search, ha_manage_backup, ha_report_issue) with shorter variants that defer schema and example detail to the ha_get_skill_guide tool (or its skill:// resource). One exception: ha_report_issue defers to the instructions field of its own response instead. WARNING: this reduces idle token usage, but may degrade LLM performance — the trimmed descriptions rely on the LLM actually calling the skill tool or reading the skill resource for detail, which is not guaranteed (some models will skip the extra tool call and end up with less guidance than they had before). Best paired with a client that supports MCP resources or with enable_tool_search. Requires restart to take effect. REQUIRES the master \"Enable beta features\" toggle above (and in the web UI) to be on — otherwise this sub-flag is ignored at runtime regardless of its value here.",
|
|
164
164
|
"features.enable_dashboard_screenshot.label": "Enable dashboard screenshot mode (beta)",
|
|
165
165
|
"features.enable_dashboard_screenshot.help": "Beta feature — disabled by default. Adds the ha_get_dashboard_screenshot tool plus include_screenshot / return_screenshot options on the dashboard get/set tools, so AI assistants can inspect one or more responsive Lovelace images (e.g. to verify a dashboard they just created). Supports stable named views, mobile/tablet/desktop batches, and PNG/JPEG/WebP/BMP output. Rendering runs in a separate, opt-in engine — balloob's \"Puppet\" App (add-on), headless Chromium — which you install once (add balloob's repository to the App store, then install \"Puppet\") and give a long-lived access token; on Docker/Container deployments you run that engine as a sidecar and set HAMCP_DASHBOARD_SCREENSHOT_ENGINE_URL. Nothing heavy is installed unless you both enable this and install the engine. Requires restart to take effect. REQUIRES the master \"Enable beta features\" toggle above (and in the web UI) to be on — otherwise this sub-flag is ignored at runtime regardless of its value here.",
|
|
166
166
|
"actions.restart_server": "Restart HA-MCP Server",
|
|
@@ -474,12 +474,6 @@
|
|
|
474
474
|
"advanced.enable_history_query_guardrails.help": "Reject recorder queries that exceed conservative entity and time-range budgets. Disabled by default.",
|
|
475
475
|
"advanced.ha_tool_concurrency.label": "Home Assistant tool concurrency",
|
|
476
476
|
"advanced.ha_tool_concurrency.help": "Optional limit on outer Home Assistant tool calls across all sessions. Internal REST, WebSocket, and per-tool fan-out concurrency is unchanged. 0 keeps unlimited behavior. A call waiting for capacity fails after 60 seconds.",
|
|
477
|
-
"advanced.backup_hint.label": "Backup hint level",
|
|
478
|
-
"advanced.backup_hint.help": "How strongly AI assistants are told to suggest a full Home Assistant backup before risky changes. It changes only this hint; automatic edit backups have their own setting.",
|
|
479
|
-
"advanced.backup_hint.choices.strong": "Strong",
|
|
480
|
-
"advanced.backup_hint.choices.normal": "Normal",
|
|
481
|
-
"advanced.backup_hint.choices.weak": "Weak",
|
|
482
|
-
"advanced.backup_hint.choices.auto": "Automatic",
|
|
483
477
|
"advanced.dashboard_screenshot_engine_url.label": "Dashboard screenshot engine URL",
|
|
484
478
|
"advanced.dashboard_screenshot_engine_url.help": "Base URL of the screenshot engine. Leave blank for Supervisor auto-discovery. Applies immediately.",
|
|
485
479
|
"advanced.enable_websocket.label": "Enable WebSocket",
|
{ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/eo.json
RENAMED
|
@@ -474,12 +474,6 @@
|
|
|
474
474
|
"advanced.enable_history_query_guardrails.help": "Malakcepti registrilajn kuriojn, kiuj superas konservativajn entajn kaj tempintervalajn buĝetojn. Malŝaltite defaŭlte.",
|
|
475
475
|
"advanced.ha_tool_concurrency.label": "Konkureco de hejmaŭtomatigaj iloj de Home Assistant",
|
|
476
476
|
"advanced.ha_tool_concurrency.help": "Laŭvola limo pri eksteraj Home Assistant ilvokoj tra ĉiuj seancoj. Interna REST, WebSocket, kaj samtempeco de disbranĉigo po ilo estas senŝanĝaj. 0 konservas senliman konduton. Voko atendanta kapaciton malsukcesas post 60 sekundoj.",
|
|
477
|
-
"advanced.backup_hint.label": "Nivelo de konsilo pri momentfotoj",
|
|
478
|
-
"advanced.backup_hint.help": "Kiom forte oni diras al AI-asistantoj sugesti plenan momentfoton de Home Assistant antaŭ riskaj ŝanĝoj. Ĝi ŝanĝas nur ĉi tiun konsilon; aŭtomataj redaktaj momentfotoj havas sian propran agordon.",
|
|
479
|
-
"advanced.backup_hint.choices.strong": "Forta",
|
|
480
|
-
"advanced.backup_hint.choices.normal": "Normala",
|
|
481
|
-
"advanced.backup_hint.choices.weak": "Malforta",
|
|
482
|
-
"advanced.backup_hint.choices.auto": "Aŭtomata",
|
|
483
477
|
"advanced.dashboard_screenshot_engine_url.label": "URL de panelo-ekrankopiga motoro",
|
|
484
478
|
"advanced.dashboard_screenshot_engine_url.help": "Baza URL de la ekrankopiga motoro. Lasu malplena por aŭtomata malkovro de Supervisor. Aplikiĝas tuj.",
|
|
485
479
|
"advanced.enable_websocket.label": "Ebligi WebSocket",
|
{ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/es.json
RENAMED
|
@@ -474,12 +474,6 @@
|
|
|
474
474
|
"advanced.enable_history_query_guardrails.help": "Rechazar consultas del registrador que superen los límites conservadores de entidades y rangos de tiempo. Desactivado por defecto.",
|
|
475
475
|
"advanced.ha_tool_concurrency.label": "Concurrencia de herramientas de Home Assistant",
|
|
476
476
|
"advanced.ha_tool_concurrency.help": "Límite opcional en las llamadas a herramientas externas de Home Assistant en todas las sesiones. La concurrencia interna de REST, WebSocket y de distribución por herramienta no se modifica. 0 mantiene el comportamiento ilimitado. Una llamada que espera capacidad falla después de 60 segundos.",
|
|
477
|
-
"advanced.backup_hint.label": "Nivel de sugerencia de copia de seguridad",
|
|
478
|
-
"advanced.backup_hint.help": "Con qué intensidad se indica a los asistentes de IA que sugieran una copia de seguridad completa de Home Assistant antes de realizar cambios arriesgados. Solo cambia esta sugerencia; las copias de seguridad de edición automática tienen su propia configuración.",
|
|
479
|
-
"advanced.backup_hint.choices.strong": "Fuerte",
|
|
480
|
-
"advanced.backup_hint.choices.normal": "Normal",
|
|
481
|
-
"advanced.backup_hint.choices.weak": "Suave",
|
|
482
|
-
"advanced.backup_hint.choices.auto": "Automático",
|
|
483
477
|
"advanced.dashboard_screenshot_engine_url.label": "URL del motor de capturas de pantalla de paneles",
|
|
484
478
|
"advanced.dashboard_screenshot_engine_url.help": "URL base del motor de capturas. Déjalo vacío para la detección automática del Supervisor. Se aplica de inmediato.",
|
|
485
479
|
"advanced.enable_websocket.label": "Activar WebSocket",
|
{ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/fr.json
RENAMED
|
@@ -474,12 +474,6 @@
|
|
|
474
474
|
"advanced.enable_history_query_guardrails.help": "Rejette les requêtes d'historique qui dépassent les budgets prudents d'entités et de plages horaires. Désactivé par défaut.",
|
|
475
475
|
"advanced.ha_tool_concurrency.label": "Concurrence des outils Home Assistant",
|
|
476
476
|
"advanced.ha_tool_concurrency.help": "Limite facultative sur les appels d'outils Home Assistant externes pour toutes les sessions. La concurrence interne pour REST, WebSocket et la répartition par outil reste inchangée. 0 conserve un comportement illimité. Un appel en attente de capacité échoue après 60 secondes.",
|
|
477
|
-
"advanced.backup_hint.label": "Niveau d'indication de sauvegarde",
|
|
478
|
-
"advanced.backup_hint.help": "Avec quelle insistance il est demandé aux assistants IA de suggérer une sauvegarde complète de Home Assistant avant des modifications risquées. Cela ne modifie que cette indication ; les sauvegardes automatiques de modification ont leur propre paramètre.",
|
|
479
|
-
"advanced.backup_hint.choices.strong": "Fort",
|
|
480
|
-
"advanced.backup_hint.choices.normal": "Normal",
|
|
481
|
-
"advanced.backup_hint.choices.weak": "Faible",
|
|
482
|
-
"advanced.backup_hint.choices.auto": "Automatique",
|
|
483
477
|
"advanced.dashboard_screenshot_engine_url.label": "URL du moteur de capture d'écran du tableau de bord",
|
|
484
478
|
"advanced.dashboard_screenshot_engine_url.help": "URL de base du moteur de capture d'écran. Laissez vide pour la découverte automatique par le Supervisor. S'applique immédiatement.",
|
|
485
479
|
"advanced.enable_websocket.label": "Activer WebSocket",
|
{ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/it.json
RENAMED
|
@@ -474,12 +474,6 @@
|
|
|
474
474
|
"advanced.enable_history_query_guardrails.help": "Rifiuta le query del recorder che superano i limiti conservativi di entità e intervallo di tempo. Disabilitato per impostazione predefinita.",
|
|
475
475
|
"advanced.ha_tool_concurrency.label": "Concorrenza degli strumenti di Home Assistant",
|
|
476
476
|
"advanced.ha_tool_concurrency.help": "Limite opzionale sulle chiamate esterne agli strumenti di Home Assistant in tutte le sessioni. La concorrenza interna di REST, WebSocket e di distribuzione per singolo strumento rimane invariata. 0 mantiene il comportamento illimitato. Una chiamata in attesa di capacità fallisce dopo 60 secondi.",
|
|
477
|
-
"advanced.backup_hint.label": "Livello di suggerimento per il backup",
|
|
478
|
-
"advanced.backup_hint.help": "Con quale insistenza gli assistenti IA vengono invitati a suggerire un backup completo di Home Assistant prima di modifiche rischiose. Modifica solo questo suggerimento; i backup di modifica automatici hanno una propria impostazione.",
|
|
479
|
-
"advanced.backup_hint.choices.strong": "Forte",
|
|
480
|
-
"advanced.backup_hint.choices.normal": "Normale",
|
|
481
|
-
"advanced.backup_hint.choices.weak": "Debole",
|
|
482
|
-
"advanced.backup_hint.choices.auto": "Automatico",
|
|
483
477
|
"advanced.dashboard_screenshot_engine_url.label": "URL del motore per gli screenshot delle dashboard",
|
|
484
478
|
"advanced.dashboard_screenshot_engine_url.help": "URL di base del motore per gli screenshot. Lascia vuoto per il rilevamento automatico tramite Supervisor. Ha effetto immediato.",
|
|
485
479
|
"advanced.enable_websocket.label": "Attiva il WebSocket",
|
{ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/ko.json
RENAMED
|
@@ -474,12 +474,6 @@
|
|
|
474
474
|
"advanced.enable_history_query_guardrails.help": "보수적인 엔티티 및 시간 범위 예산을 초과하는 recorder 쿼리를 거부합니다. 기본적으로 비활성화되어 있습니다.",
|
|
475
475
|
"advanced.ha_tool_concurrency.label": "Home Assistant 도구 동시성",
|
|
476
476
|
"advanced.ha_tool_concurrency.help": "모든 세션에 걸친 외부 Home Assistant 도구 호출의 선택적 제한. 내부 REST, WebSocket 및 도구별 팬아웃 동시성은 변경되지 않습니다. 0은 무제한 동작을 유지합니다. 용량을 대기 중인 호출은 60초 후에 실패합니다.",
|
|
477
|
-
"advanced.backup_hint.label": "백업 힌트 수준",
|
|
478
|
-
"advanced.backup_hint.help": "위험한 변경 전에 전체 Home Assistant 백업을 제안하도록 AI 어시스턴트에 지시하는 강도입니다. 이 힌트만 변경하며 자동 편집 백업에는 자체 설정이 있습니다.",
|
|
479
|
-
"advanced.backup_hint.choices.strong": "강하게",
|
|
480
|
-
"advanced.backup_hint.choices.normal": "보통",
|
|
481
|
-
"advanced.backup_hint.choices.weak": "약하게",
|
|
482
|
-
"advanced.backup_hint.choices.auto": "자동",
|
|
483
477
|
"advanced.dashboard_screenshot_engine_url.label": "대시보드 스크린샷 엔진 URL",
|
|
484
478
|
"advanced.dashboard_screenshot_engine_url.help": "스크린샷 엔진의 기본 URL입니다. Supervisor 자동 검색을 쓰려면 비워 두세요. 즉시 적용됩니다.",
|
|
485
479
|
"advanced.enable_websocket.label": "WebSocket 사용",
|
{ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/nl.json
RENAMED
|
@@ -474,12 +474,6 @@
|
|
|
474
474
|
"advanced.enable_history_query_guardrails.help": "Wijs recorderquery's af die de conservatieve budgetten voor entiteiten en tijdsbereik overschrijden. Standaard uitgeschakeld.",
|
|
475
475
|
"advanced.ha_tool_concurrency.label": "Home Assistant-toolgelijktijdigheid",
|
|
476
476
|
"advanced.ha_tool_concurrency.help": "Optionele limiet voor uiterste Home Assistant-toolaanroepen over alle sessies heen. Interne REST-, WebSocket- en per-tool fan-out-gelijktijdigheid blijft ongewijzigd. 0 behoudt onbeperkt gedrag. Een aanroep die wacht op capaciteit mislukt na 60 seconden.",
|
|
477
|
-
"advanced.backup_hint.label": "Niveau van back-uptip",
|
|
478
|
-
"advanced.backup_hint.help": "Hoe sterk AI-assistenten worden aangespoord om een volledige Home Assistant-back-up voor te stellen vóór risicovolle wijzigingen. Dit wijzigt alleen deze tip; automatische bewerkingsback-ups hebben hun eigen instelling.",
|
|
479
|
-
"advanced.backup_hint.choices.strong": "Sterk",
|
|
480
|
-
"advanced.backup_hint.choices.normal": "Normaal",
|
|
481
|
-
"advanced.backup_hint.choices.weak": "Zwak",
|
|
482
|
-
"advanced.backup_hint.choices.auto": "Automatisch",
|
|
483
477
|
"advanced.dashboard_screenshot_engine_url.label": "Dashboard screenshot engine URL",
|
|
484
478
|
"advanced.dashboard_screenshot_engine_url.help": "Basis-URL van de screenshot engine. Laat leeg voor Supervisor auto-ontdekking. Wordt onmiddellijk toegepast.",
|
|
485
479
|
"advanced.enable_websocket.label": "WebSocket inschakelen",
|
{ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/pl.json
RENAMED
|
@@ -474,12 +474,6 @@
|
|
|
474
474
|
"advanced.enable_history_query_guardrails.help": "Odrzucaj zapytania rejestratora przekraczające zachowawcze limity encji i zakresu czasu. Domyślnie wyłączone.",
|
|
475
475
|
"advanced.ha_tool_concurrency.label": "Współbieżność narzędzi Home Assistant",
|
|
476
476
|
"advanced.ha_tool_concurrency.help": "Opcjonalny limit zewnętrznych wywołań narzędzi Home Assistant we wszystkich sesjach. Współbieżność wewnętrznych żądań REST, WebSocket oraz rozgałęzień na narzędzie pozostaje bez zmian. Wartość 0 oznacza brak limitu. Wywołanie oczekujące na wolne zasoby zakończy się niepowodzeniem po 60 sekundach.",
|
|
477
|
-
"advanced.backup_hint.label": "Poziom podpowiedzi kopii zapasowej",
|
|
478
|
-
"advanced.backup_hint.help": "Jak stanowczo asystenci AI są instruowani, aby sugerować pełną kopię zapasową Home Assistant przed ryzykownymi zmianami. Zmienia to tylko tę podpowiedź; automatyczne kopie zapasowe edycji mają własne ustawienie.",
|
|
479
|
-
"advanced.backup_hint.choices.strong": "Silny",
|
|
480
|
-
"advanced.backup_hint.choices.normal": "Normalny",
|
|
481
|
-
"advanced.backup_hint.choices.weak": "Słaby",
|
|
482
|
-
"advanced.backup_hint.choices.auto": "Automatyczny",
|
|
483
477
|
"advanced.dashboard_screenshot_engine_url.label": "Adres URL silnika zrzutów ekranu pulpitu nawigacyjnego",
|
|
484
478
|
"advanced.dashboard_screenshot_engine_url.help": "Bazowy adres URL silnika zrzutów ekranu. Pozostaw puste dla automatycznego wykrywania przez Supervisor. Obowiązuje natychmiast.",
|
|
485
479
|
"advanced.enable_websocket.label": "Włącz WebSocket",
|
{ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/ru.json
RENAMED
|
@@ -474,12 +474,6 @@
|
|
|
474
474
|
"advanced.enable_history_query_guardrails.help": "Отклонять запросы к истории, превышающие консервативные лимиты по объектам и временным диапазонам. Отключено по умолчанию.",
|
|
475
475
|
"advanced.ha_tool_concurrency.label": "Параллелизм инструментов Home Assistant",
|
|
476
476
|
"advanced.ha_tool_concurrency.help": "Необязательное ограничение на внешние вызовы инструментов Home Assistant во всех сеансах. Внутренние REST, WebSocket и параллельность запросов по инструментам остаются без изменений. 0 сохраняет поведение без ограничений. Запрос, ожидающий свободного ресурса, завершается ошибкой через 60 секунд.",
|
|
477
|
-
"advanced.backup_hint.label": "Уровень подсказок резервного копирования",
|
|
478
|
-
"advanced.backup_hint.help": "Насколько настойчиво ИИ-ассистентам рекомендуется предлагать создание полной резервной копии Home Assistant перед рискованными изменениями. Изменяет только эту подсказку; автоматические резервные копии редактирования имеют собственный параметр.",
|
|
479
|
-
"advanced.backup_hint.choices.strong": "Настойчивое",
|
|
480
|
-
"advanced.backup_hint.choices.normal": "Обычное",
|
|
481
|
-
"advanced.backup_hint.choices.weak": "Мягкое",
|
|
482
|
-
"advanced.backup_hint.choices.auto": "Автоматическое",
|
|
483
477
|
"advanced.dashboard_screenshot_engine_url.label": "URL движка снимков панели",
|
|
484
478
|
"advanced.dashboard_screenshot_engine_url.help": "Базовый URL движка. Оставьте пустым для автопоиска через Supervisor. Действует сразу.",
|
|
485
479
|
"advanced.enable_websocket.label": "Включить WebSocket",
|
{ha_mcp_dev-9.0.0.dev3204 → ha_mcp_dev-9.0.0.dev3208}/src/ha_mcp/settings_ui/locales/sv.json
RENAMED
|
@@ -474,12 +474,6 @@
|
|
|
474
474
|
"advanced.enable_history_query_guardrails.help": "Avvisa recorder-frågor som överskrider konservativa budgetar för entiteter och tidsintervall. Inaktiverat som standard.",
|
|
475
475
|
"advanced.ha_tool_concurrency.label": "Samtidighet för Home Assistant-verktyg",
|
|
476
476
|
"advanced.ha_tool_concurrency.help": "Valfri gräns för yttre Home Assistant-verktygsanrop över alla sessioner. Intern REST-, WebSocket- och per-verktyg-samtidighet förblir oförändrad. 0 behåller obegränsat beteende. Ett anrop som väntar på kapacitet misslyckas efter 60 sekunder.",
|
|
477
|
-
"advanced.backup_hint.label": "Nivå för säkerhetskopieringstips",
|
|
478
|
-
"advanced.backup_hint.help": "Hur starkt AI-assistenter uppmanas att föreslå en fullständig Home Assistant-säkerhetskopia före riskabla ändringar. Det ändrar bara detta tips; automatiska redigeringssäkerhetskopior har sin egen inställning.",
|
|
479
|
-
"advanced.backup_hint.choices.strong": "Stark",
|
|
480
|
-
"advanced.backup_hint.choices.normal": "Normal",
|
|
481
|
-
"advanced.backup_hint.choices.weak": "Svag",
|
|
482
|
-
"advanced.backup_hint.choices.auto": "Automatisk",
|
|
483
477
|
"advanced.dashboard_screenshot_engine_url.label": "URL för skärmbildsmotor för instrumentpanel",
|
|
484
478
|
"advanced.dashboard_screenshot_engine_url.help": "Bas-URL för skärmbildsmotorn. Lämna tomt för automatisk upptäckt av Supervisor. Tillämpas omedelbart.",
|
|
485
479
|
"advanced.enable_websocket.label": "Aktivera WebSocket",
|