ha-mcp-dev 8.5.0.dev2694__tar.gz → 8.5.0.dev2699__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ha_mcp_dev-8.5.0.dev2694/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.5.0.dev2699}/PKG-INFO +1 -1
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/pyproject.toml +1 -1
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/backup_manager.py +251 -42
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/cs.json +3 -3
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/de.json +3 -3
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/eo.json +3 -3
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/es.json +3 -3
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/fr.json +3 -3
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/it.json +3 -3
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/ko.json +3 -3
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/nl.json +3 -3
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/pl.json +3 -3
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/ru.json +3 -3
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/sv.json +3 -3
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/zh-Hans.json +3 -3
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/zh-Hant.json +3 -3
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_calendar.py +396 -57
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/MANIFEST.in +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/setup.cfg +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/http_transport.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/evals/area-target-over-entity-list/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/evals/arrive-home-automation/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/evals/assist-shortcut-card/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/evals/avg-temperature/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/evals/backup-deletion-confirmation/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/evals/blueprint-authoring/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/evals/button-event-entity/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/evals/device-id-trigger-migration/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/evals/helper-flow-fields-not-platform-yaml/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/evals/media-player-song/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/evals/motion-light-automation-mode/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/evals/rename-entity-impact-analysis/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/evals/template-attributes-yaml-exception/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/evals/timer-finished-automation/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/evals/vacuum-last-clean/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/scripts/check_eval_cases.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/blueprint_sources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/entity_registration.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/scene_discovery.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/transforms/component_search.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/transforms/write_tool_note.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/dashboard_patch.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/mcp_client_host.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/registry_update_lock.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/tests/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/tests/test_constants.py +0 -0
- {ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/tests/test_env_manager.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "8.5.0.
|
|
7
|
+
version = "8.5.0.dev2699"
|
|
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
|
|
@@ -56,7 +56,7 @@ from collections import Counter
|
|
|
56
56
|
from collections.abc import AsyncIterator, Awaitable, Callable
|
|
57
57
|
from contextlib import AsyncExitStack, asynccontextmanager, suppress
|
|
58
58
|
from dataclasses import dataclass, field
|
|
59
|
-
from datetime import UTC, datetime
|
|
59
|
+
from datetime import UTC, datetime, timedelta
|
|
60
60
|
from functools import cached_property
|
|
61
61
|
from pathlib import Path
|
|
62
62
|
from typing import Any, Literal, NotRequired, TypedDict
|
|
@@ -65,7 +65,11 @@ import yaml # type: ignore[import-untyped]
|
|
|
65
65
|
|
|
66
66
|
from ha_mcp._vendor.fastmcp.exceptions import ToolError
|
|
67
67
|
|
|
68
|
-
from .client.rest_client import
|
|
68
|
+
from .client.rest_client import (
|
|
69
|
+
HomeAssistantCommandError,
|
|
70
|
+
HomeAssistantConnectionError,
|
|
71
|
+
HomeAssistantError,
|
|
72
|
+
)
|
|
69
73
|
from .utils.data_paths import get_data_dir
|
|
70
74
|
from .utils.registry_update_lock import registry_update_lock
|
|
71
75
|
|
|
@@ -2464,9 +2468,76 @@ async def _restore_group(client: Any, entity_id: str, config: Any) -> Any:
|
|
|
2464
2468
|
# Calendar events — calendar.get_events to fetch, calendar.create/update services.
|
|
2465
2469
|
|
|
2466
2470
|
|
|
2471
|
+
# Bounds of the second sweep below: wide enough for a past event or one booked
|
|
2472
|
+
# well ahead, without asking a busy calendar to expand a decade of recurrences.
|
|
2473
|
+
_CALENDAR_WIDE_LOOKBACK_DAYS = 366
|
|
2474
|
+
_CALENDAR_WIDE_LOOKAHEAD_DAYS = 732
|
|
2475
|
+
|
|
2476
|
+
|
|
2477
|
+
async def _find_calendar_event(
|
|
2478
|
+
client: Any,
|
|
2479
|
+
cal: str,
|
|
2480
|
+
uid: str,
|
|
2481
|
+
recurrence_id: str | None,
|
|
2482
|
+
start: datetime,
|
|
2483
|
+
end: datetime,
|
|
2484
|
+
) -> Any:
|
|
2485
|
+
"""Return the event with ``uid`` on ``cal`` between ``start`` and ``end``.
|
|
2486
|
+
|
|
2487
|
+
Reads the REST calendar view rather than the ``calendar.get_events``
|
|
2488
|
+
service: the service response is built by HA's
|
|
2489
|
+
``_list_events_dict_factory``, which keeps only ``LIST_EVENT_FIELDS``
|
|
2490
|
+
(start/end/summary/description/location/status) and therefore carries no
|
|
2491
|
+
``uid`` to match on. ``/api/calendars/{entity_id}`` serialises the whole
|
|
2492
|
+
CalendarEvent, so uid, recurrence_id and rrule survive — the same endpoint
|
|
2493
|
+
``ha_config_get_calendar_events`` reads.
|
|
2494
|
+
|
|
2495
|
+
A recurring series is expanded into occurrences that all share the ``uid``,
|
|
2496
|
+
so ``recurrence_id`` selects which one; without it the first match wins.
|
|
2497
|
+
"""
|
|
2498
|
+
try:
|
|
2499
|
+
events = await client._request(
|
|
2500
|
+
"GET",
|
|
2501
|
+
f"/calendars/{cal}",
|
|
2502
|
+
params={"start": start.isoformat(), "end": end.isoformat()},
|
|
2503
|
+
)
|
|
2504
|
+
except HomeAssistantError as err:
|
|
2505
|
+
# Only treat 404 (calendar entity not present) as "skip silently".
|
|
2506
|
+
# Auth/transport/server errors deserve a WARNING so an operator
|
|
2507
|
+
# can spot a misconfigured calendar integration; matches the
|
|
2508
|
+
# ``status_code == 404`` narrowing the automation/script/scene
|
|
2509
|
+
# fetchers use.
|
|
2510
|
+
if getattr(err, "status_code", None) == 404:
|
|
2511
|
+
return None
|
|
2512
|
+
raise
|
|
2513
|
+
for event in _require_list(events, f"/calendars/{cal}"):
|
|
2514
|
+
if not isinstance(event, dict) or event.get("uid") != uid:
|
|
2515
|
+
continue
|
|
2516
|
+
if recurrence_id is not None and event.get("recurrence_id") != recurrence_id:
|
|
2517
|
+
continue
|
|
2518
|
+
return event
|
|
2519
|
+
return None
|
|
2520
|
+
|
|
2521
|
+
|
|
2522
|
+
def _recurrence_id_window(
|
|
2523
|
+
recurrence_id: str | None,
|
|
2524
|
+
) -> tuple[datetime, datetime] | None:
|
|
2525
|
+
"""A day-wide window around an iCalendar recurrence id, if it parses."""
|
|
2526
|
+
if not recurrence_id:
|
|
2527
|
+
return None
|
|
2528
|
+
for fmt in ("%Y%m%dT%H%M%S", "%Y%m%dT%H%M%SZ", "%Y%m%d"):
|
|
2529
|
+
try:
|
|
2530
|
+
at = datetime.strptime(recurrence_id, fmt).replace(tzinfo=UTC)
|
|
2531
|
+
except ValueError:
|
|
2532
|
+
continue
|
|
2533
|
+
return at - timedelta(days=1), at + timedelta(days=1)
|
|
2534
|
+
return None
|
|
2535
|
+
|
|
2536
|
+
|
|
2467
2537
|
async def _fetch_calendar_event(client: Any, entity_id: str) -> Any:
|
|
2468
|
-
# entity_id is "<calendar.entity>::<event_uid>"
|
|
2469
|
-
cal, _,
|
|
2538
|
+
# entity_id is "<calendar.entity>::<event_uid>[::<recurrence_id>]"
|
|
2539
|
+
cal, _, rest = entity_id.partition("::")
|
|
2540
|
+
uid, _, recurrence_id = rest.partition("::")
|
|
2470
2541
|
if not cal or not uid:
|
|
2471
2542
|
return None
|
|
2472
2543
|
# Configurable lookahead window. Default 7 days catches typical edits;
|
|
@@ -2482,48 +2553,186 @@ async def _fetch_calendar_event(client: Any, entity_id: str) -> Any:
|
|
|
2482
2553
|
except (AttributeError, ImportError, ValueError, TypeError):
|
|
2483
2554
|
days = 7
|
|
2484
2555
|
days = max(1, min(365, days))
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
#
|
|
2502
|
-
#
|
|
2503
|
-
#
|
|
2504
|
-
#
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2556
|
+
now = datetime.now(UTC)
|
|
2557
|
+
wanted = recurrence_id or None
|
|
2558
|
+
# A recurrence_id names the occurrence's own date, so an occurrence far
|
|
2559
|
+
# outside the windows below is still found in one request.
|
|
2560
|
+
around = _recurrence_id_window(wanted)
|
|
2561
|
+
found = (
|
|
2562
|
+
await _find_calendar_event(client, cal, uid, wanted, *around)
|
|
2563
|
+
if around
|
|
2564
|
+
else None
|
|
2565
|
+
)
|
|
2566
|
+
if found is None:
|
|
2567
|
+
found = await _find_calendar_event(
|
|
2568
|
+
client, cal, uid, wanted, now, now + timedelta(days=days)
|
|
2569
|
+
)
|
|
2570
|
+
if found is None:
|
|
2571
|
+
# The configured window is the cheap common case, not the contract: a
|
|
2572
|
+
# write targets an event by uid, and an event being edited or deleted
|
|
2573
|
+
# can sit in the past or well beyond the lookahead. Missing it would
|
|
2574
|
+
# silently skip the snapshot and leave the prior values unrecoverable,
|
|
2575
|
+
# so sweep once more over a wide window before concluding it is gone.
|
|
2576
|
+
found = await _find_calendar_event(
|
|
2577
|
+
client,
|
|
2578
|
+
cal,
|
|
2579
|
+
uid,
|
|
2580
|
+
wanted,
|
|
2581
|
+
now - timedelta(days=_CALENDAR_WIDE_LOOKBACK_DAYS),
|
|
2582
|
+
now + timedelta(days=_CALENDAR_WIDE_LOOKAHEAD_DAYS),
|
|
2583
|
+
)
|
|
2584
|
+
if found is None:
|
|
2585
|
+
return None
|
|
2586
|
+
if wanted is None and found.get("rrule"):
|
|
2587
|
+
# The write targets a whole series, but the calendar view only exposes
|
|
2588
|
+
# expanded OCCURRENCES — never the master event's own start. Restoring
|
|
2589
|
+
# one occurrence's values would revert a single date and leave the rest
|
|
2590
|
+
# of the series edited, or re-create a series starting at the wrong
|
|
2591
|
+
# date, both reported as a successful restore. No snapshot is the
|
|
2592
|
+
# honest answer; a single-occurrence write (which carries a
|
|
2593
|
+
# recurrence_id) is captured normally.
|
|
2594
|
+
logger.warning(
|
|
2595
|
+
"Auto-backup: no snapshot for series-wide write on %s (event %s); "
|
|
2596
|
+
"Home Assistant exposes only expanded occurrences, so the series "
|
|
2597
|
+
"could not be restored faithfully",
|
|
2598
|
+
cal,
|
|
2599
|
+
uid,
|
|
2600
|
+
)
|
|
2601
|
+
return None
|
|
2602
|
+
return {"calendar_entity_id": cal, **found}
|
|
2603
|
+
|
|
2604
|
+
|
|
2605
|
+
def _calendar_bound(value: Any) -> tuple[str, bool] | None:
|
|
2606
|
+
"""Return ``(iso_value, is_date_only)`` for a snapshotted event boundary.
|
|
2607
|
+
|
|
2608
|
+
The REST view wraps each boundary as ``{"dateTime": ...}`` (timed) or
|
|
2609
|
+
``{"date": ...}`` (all-day); snapshots taken before that switch hold a
|
|
2610
|
+
flat ISO string, which a 10-character length identifies as date-only.
|
|
2611
|
+
"""
|
|
2612
|
+
if isinstance(value, dict):
|
|
2613
|
+
if value.get("dateTime"):
|
|
2614
|
+
return str(value["dateTime"]), False
|
|
2615
|
+
if value.get("date"):
|
|
2616
|
+
return str(value["date"]), True
|
|
2617
|
+
return None
|
|
2618
|
+
if isinstance(value, str) and value:
|
|
2619
|
+
return value, len(value) == 10
|
|
2514
2620
|
return None
|
|
2515
2621
|
|
|
2516
2622
|
|
|
2623
|
+
# HA reports a missing event as a plain ``failed`` command error whose message
|
|
2624
|
+
# comes from the integration (Local Calendar surfaces ical's "No existing item
|
|
2625
|
+
# with uid/recurrence_id: ..."), so absence has to be read off the message.
|
|
2626
|
+
_CALENDAR_EVENT_ABSENT_MARKERS = ("no existing item", "not found", "does not exist")
|
|
2627
|
+
|
|
2628
|
+
|
|
2629
|
+
def _calendar_update_cannot_apply(err: HomeAssistantCommandError) -> bool:
|
|
2630
|
+
"""Whether ``err`` proves the in-place update never touched the event."""
|
|
2631
|
+
if getattr(err, "code", None) == "not_supported":
|
|
2632
|
+
# The calendar advertises no UPDATE_EVENT, so it cannot ever accept
|
|
2633
|
+
# the update and re-creating is the only restore available.
|
|
2634
|
+
return True
|
|
2635
|
+
message = str(err).lower()
|
|
2636
|
+
return any(marker in message for marker in _CALENDAR_EVENT_ABSENT_MARKERS)
|
|
2637
|
+
|
|
2638
|
+
|
|
2639
|
+
async def _recreate_calendar_event(
|
|
2640
|
+
client: Any,
|
|
2641
|
+
cal: str,
|
|
2642
|
+
event: dict[str, Any],
|
|
2643
|
+
start: tuple[str, bool],
|
|
2644
|
+
end: tuple[str, bool],
|
|
2645
|
+
) -> Any:
|
|
2646
|
+
"""Create an event that no longer exists under its snapshotted uid.
|
|
2647
|
+
|
|
2648
|
+
Always a single event: a series-wide write is never snapshotted (the
|
|
2649
|
+
calendar view cannot describe the series), and a snapshot of one
|
|
2650
|
+
occurrence must not be re-created as a series of its own.
|
|
2651
|
+
"""
|
|
2652
|
+
data: dict[str, Any] = {"entity_id": cal, "summary": event["summary"]}
|
|
2653
|
+
if start[1]:
|
|
2654
|
+
data.update({"start_date": start[0], "end_date": end[0]})
|
|
2655
|
+
else:
|
|
2656
|
+
data.update({"start_date_time": start[0], "end_date_time": end[0]})
|
|
2657
|
+
for key in ("description", "location"):
|
|
2658
|
+
if event.get(key):
|
|
2659
|
+
data[key] = event[key]
|
|
2660
|
+
return await _rest_post(client, "services/calendar/create_event", data)
|
|
2661
|
+
|
|
2662
|
+
|
|
2517
2663
|
async def _restore_calendar_event(client: Any, entity_id: str, config: Any) -> Any:
|
|
2518
|
-
cal =
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2664
|
+
cal, _, rest = entity_id.partition("::")
|
|
2665
|
+
key_uid, _, key_recurrence_id = rest.partition("::")
|
|
2666
|
+
cal = config.get("calendar_entity_id") or cal
|
|
2667
|
+
uid = config.get("uid") or key_uid
|
|
2668
|
+
recurrence_id = config.get("recurrence_id") or key_recurrence_id or None
|
|
2669
|
+
start = _calendar_bound(config.get("start"))
|
|
2670
|
+
end = _calendar_bound(config.get("end"))
|
|
2671
|
+
if start is None or end is None:
|
|
2672
|
+
raise HomeAssistantError(
|
|
2673
|
+
f"Calendar snapshot for {entity_id!r} has no usable start/end"
|
|
2674
|
+
)
|
|
2675
|
+
|
|
2676
|
+
# Home Assistant merges the update into the stored event (ical dumps it
|
|
2677
|
+
# with ``exclude_unset``), so a field left out keeps whatever the write
|
|
2678
|
+
# put there. Send the text fields unconditionally — empty clears a
|
|
2679
|
+
# description or location the write added.
|
|
2680
|
+
event: dict[str, Any] = {
|
|
2681
|
+
"summary": config.get("summary") or "",
|
|
2682
|
+
"dtstart": start[0],
|
|
2683
|
+
"dtend": end[0],
|
|
2684
|
+
"description": config.get("description") or "",
|
|
2685
|
+
"location": config.get("location") or "",
|
|
2686
|
+
}
|
|
2687
|
+
# ``rrule`` is deliberately never replayed. Every expanded occurrence
|
|
2688
|
+
# carries the series' rule, and sending it back onto one occurrence —
|
|
2689
|
+
# which ical has already forked into a plain event — would make that
|
|
2690
|
+
# occurrence a second series under the same uid, duplicating every later
|
|
2691
|
+
# date.
|
|
2692
|
+
|
|
2693
|
+
if not uid:
|
|
2694
|
+
return await _recreate_calendar_event(client, cal, event, start, end)
|
|
2695
|
+
|
|
2696
|
+
# An edited event still exists under its uid, so put the captured values
|
|
2697
|
+
# back in place instead of creating a second copy. Only a snapshot of a
|
|
2698
|
+
# DELETED event (or a calendar without UPDATE_EVENT) falls through to
|
|
2699
|
+
# re-creation.
|
|
2700
|
+
message: dict[str, Any] = {
|
|
2701
|
+
"type": "calendar/event/update",
|
|
2702
|
+
"entity_id": cal,
|
|
2703
|
+
"uid": uid,
|
|
2704
|
+
"event": event,
|
|
2705
|
+
}
|
|
2706
|
+
if recurrence_id:
|
|
2707
|
+
message["recurrence_id"] = recurrence_id
|
|
2708
|
+
try:
|
|
2709
|
+
return await _ws_send(client, message)
|
|
2710
|
+
except HomeAssistantCommandError as err:
|
|
2711
|
+
if not _calendar_update_cannot_apply(err):
|
|
2712
|
+
# A transport drop, a timeout or an unclassified command failure
|
|
2713
|
+
# leaves it unknown whether HA applied the update; re-creating
|
|
2714
|
+
# then leaves a duplicate behind. Only a failure that PROVES the
|
|
2715
|
+
# update never landed falls through. Connection errors and
|
|
2716
|
+
# timeouts are separate types, so they never reach here at all.
|
|
2717
|
+
raise
|
|
2718
|
+
if recurrence_id:
|
|
2719
|
+
# The occurrence is gone — deleted from the series, or the series
|
|
2720
|
+
# moved and this recurrence_id no longer names one of its dates.
|
|
2721
|
+
# ``create_event`` could only add a detached event next to the
|
|
2722
|
+
# series, which is not the occurrence being restored, so say so
|
|
2723
|
+
# instead of inventing one.
|
|
2724
|
+
raise HomeAssistantError(
|
|
2725
|
+
f"Occurrence {recurrence_id} of event {uid} no longer exists on "
|
|
2726
|
+
f"{cal}, and an occurrence cannot be re-created into its series"
|
|
2727
|
+
) from err
|
|
2728
|
+
logger.info(
|
|
2729
|
+
"Restoring calendar event %s on %s in place is not possible (%s); "
|
|
2730
|
+
"re-creating it instead",
|
|
2731
|
+
uid,
|
|
2732
|
+
cal,
|
|
2733
|
+
err,
|
|
2734
|
+
)
|
|
2735
|
+
return await _recreate_calendar_event(client, cal, event, start, end)
|
|
2527
2736
|
|
|
2528
2737
|
|
|
2529
2738
|
# Zones — zone/{list,update} (no ``config/`` prefix per HA's actual WS API;
|
{ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/cs.json
RENAMED
|
@@ -542,8 +542,8 @@
|
|
|
542
542
|
"description": "Získat informace o štítku – vypsat všechny štítky nebo získat konkrétní podle ID."
|
|
543
543
|
},
|
|
544
544
|
"ha_config_get_scene": {
|
|
545
|
-
"title": "Získat
|
|
546
|
-
"description": "
|
|
545
|
+
"title": "Získat nebo najít scény",
|
|
546
|
+
"description": "Získejte kompletní konfiguraci scény nebo vyhledejte a seznamte scény bez scene_id."
|
|
547
547
|
},
|
|
548
548
|
"ha_config_get_script": {
|
|
549
549
|
"title": "Získat konfiguraci skriptu",
|
|
@@ -599,7 +599,7 @@
|
|
|
599
599
|
},
|
|
600
600
|
"ha_config_set_calendar_event": {
|
|
601
601
|
"title": "Vytvořit nebo aktualizovat událost kalendáře",
|
|
602
|
-
"description": "
|
|
602
|
+
"description": "Vytvořte novou událost v kalendáři nebo aktualizujte stávající."
|
|
603
603
|
},
|
|
604
604
|
"ha_config_set_category": {
|
|
605
605
|
"title": "Vytvořit nebo aktualizovat kategorii",
|
{ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/de.json
RENAMED
|
@@ -573,8 +573,8 @@
|
|
|
573
573
|
"description": "Zeigt Labels oder Details zu einem bestimmten Label."
|
|
574
574
|
},
|
|
575
575
|
"ha_config_get_scene": {
|
|
576
|
-
"title": "
|
|
577
|
-
"description": "
|
|
576
|
+
"title": "Szenen abrufen oder finden",
|
|
577
|
+
"description": "Vollständige Konfiguration einer Szene abrufen oder Szenen ohne scene_id auflisten und durchsuchen."
|
|
578
578
|
},
|
|
579
579
|
"ha_config_get_script": {
|
|
580
580
|
"title": "Skript abrufen",
|
|
@@ -630,7 +630,7 @@
|
|
|
630
630
|
},
|
|
631
631
|
"ha_config_set_calendar_event": {
|
|
632
632
|
"title": "Kalenderereignis erstellen/aktualisieren",
|
|
633
|
-
"description": "
|
|
633
|
+
"description": "Ein neues Ereignis in einem Kalender erstellen oder ein bestehendes aktualisieren."
|
|
634
634
|
},
|
|
635
635
|
"ha_config_set_category": {
|
|
636
636
|
"title": "Kategorie erstellen/aktualisieren",
|
{ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/eo.json
RENAMED
|
@@ -542,8 +542,8 @@
|
|
|
542
542
|
"description": "Akiru etikedan informon - listigu ĉiujn etikedojn aŭ akiru specifan per ID."
|
|
543
543
|
},
|
|
544
544
|
"ha_config_get_scene": {
|
|
545
|
-
"title": "
|
|
546
|
-
"description": "
|
|
545
|
+
"title": "Ricevi aŭ trovi scenojn",
|
|
546
|
+
"description": "Ricevi la kompletan agordon de sceno, aŭ listigi kaj serĉi scenojn sen scene_id."
|
|
547
547
|
},
|
|
548
548
|
"ha_config_get_script": {
|
|
549
549
|
"title": "Akiri Skriptan Agordon",
|
|
@@ -599,7 +599,7 @@
|
|
|
599
599
|
},
|
|
600
600
|
"ha_config_set_calendar_event": {
|
|
601
601
|
"title": "Krei aŭ Ĝisdatigi Kalendaran Eventon",
|
|
602
|
-
"description": "
|
|
602
|
+
"description": "Krei novan eventon en kalendaro, aŭ ĝisdatigi ekzistantan."
|
|
603
603
|
},
|
|
604
604
|
"ha_config_set_category": {
|
|
605
605
|
"title": "Krei aŭ Ĝisdatigi Kategorion",
|
{ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/es.json
RENAMED
|
@@ -573,8 +573,8 @@
|
|
|
573
573
|
"description": "Lista todas las etiquetas u obtiene una concreta por su ID."
|
|
574
574
|
},
|
|
575
575
|
"ha_config_get_scene": {
|
|
576
|
-
"title": "Obtener
|
|
577
|
-
"description": "
|
|
576
|
+
"title": "Obtener o buscar escenas",
|
|
577
|
+
"description": "Obtiene la configuración completa de una escena, o lista y busca escenas sin scene_id."
|
|
578
578
|
},
|
|
579
579
|
"ha_config_get_script": {
|
|
580
580
|
"title": "Obtener configuración de script",
|
|
@@ -630,7 +630,7 @@
|
|
|
630
630
|
},
|
|
631
631
|
"ha_config_set_calendar_event": {
|
|
632
632
|
"title": "Crear o actualizar evento de calendario",
|
|
633
|
-
"description": "Crea un evento
|
|
633
|
+
"description": "Crea un nuevo evento en un calendario o actualiza uno existente."
|
|
634
634
|
},
|
|
635
635
|
"ha_config_set_category": {
|
|
636
636
|
"title": "Crear o actualizar categoría",
|
{ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/fr.json
RENAMED
|
@@ -573,8 +573,8 @@
|
|
|
573
573
|
"description": "Affiche les étiquettes ou les détails d'une étiquette spécifique."
|
|
574
574
|
},
|
|
575
575
|
"ha_config_get_scene": {
|
|
576
|
-
"title": "Obtenir
|
|
577
|
-
"description": "
|
|
576
|
+
"title": "Obtenir ou rechercher des scènes",
|
|
577
|
+
"description": "Obtenir la configuration complète d'une scène, ou lister et rechercher des scènes sans scene_id."
|
|
578
578
|
},
|
|
579
579
|
"ha_config_get_script": {
|
|
580
580
|
"title": "Obtenir le script",
|
|
@@ -630,7 +630,7 @@
|
|
|
630
630
|
},
|
|
631
631
|
"ha_config_set_calendar_event": {
|
|
632
632
|
"title": "Créer/mettre à jour un événement du calendrier",
|
|
633
|
-
"description": "
|
|
633
|
+
"description": "Créer un nouvel événement dans un calendrier ou mettre à jour un événement existant."
|
|
634
634
|
},
|
|
635
635
|
"ha_config_set_category": {
|
|
636
636
|
"title": "Créer/mettre à jour la catégorie",
|
{ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/it.json
RENAMED
|
@@ -573,8 +573,8 @@
|
|
|
573
573
|
"description": "Ottiene informazioni sulle etichette: le elenca tutte o ne restituisce una specifica per ID."
|
|
574
574
|
},
|
|
575
575
|
"ha_config_get_scene": {
|
|
576
|
-
"title": "Ottieni
|
|
577
|
-
"description": "
|
|
576
|
+
"title": "Ottieni o trova scene",
|
|
577
|
+
"description": "Ottieni la configurazione completa di una scena, oppure elenca e cerca scene senza scene_id."
|
|
578
578
|
},
|
|
579
579
|
"ha_config_get_script": {
|
|
580
580
|
"title": "Ottieni la configurazione di uno script",
|
|
@@ -630,7 +630,7 @@
|
|
|
630
630
|
},
|
|
631
631
|
"ha_config_set_calendar_event": {
|
|
632
632
|
"title": "Crea o aggiorna un evento del calendario",
|
|
633
|
-
"description": "Crea un nuovo evento in un calendario."
|
|
633
|
+
"description": "Crea un nuovo evento in un calendario o aggiorna uno esistente."
|
|
634
634
|
},
|
|
635
635
|
"ha_config_set_category": {
|
|
636
636
|
"title": "Crea o aggiorna una categoria",
|
{ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/ko.json
RENAMED
|
@@ -573,8 +573,8 @@
|
|
|
573
573
|
"description": "라벨 정보를 가져옵니다. 전체 라벨을 나열하거나 ID로 하나를 확인합니다."
|
|
574
574
|
},
|
|
575
575
|
"ha_config_get_scene": {
|
|
576
|
-
"title": "장면
|
|
577
|
-
"description": "
|
|
576
|
+
"title": "장면 가져오기 또는 찾기",
|
|
577
|
+
"description": "장면의 전체 구성을 가져오거나, scene_id 없이 장면을 나열하고 검색합니다."
|
|
578
578
|
},
|
|
579
579
|
"ha_config_get_script": {
|
|
580
580
|
"title": "스크립트 설정 조회",
|
|
@@ -630,7 +630,7 @@
|
|
|
630
630
|
},
|
|
631
631
|
"ha_config_set_calendar_event": {
|
|
632
632
|
"title": "캘린더 일정 생성·수정",
|
|
633
|
-
"description": "캘린더에 새 일정을
|
|
633
|
+
"description": "캘린더에 새 일정을 만들거나 기존 일정을 업데이트합니다."
|
|
634
634
|
},
|
|
635
635
|
"ha_config_set_category": {
|
|
636
636
|
"title": "카테고리 생성·수정",
|
{ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/nl.json
RENAMED
|
@@ -542,8 +542,8 @@
|
|
|
542
542
|
"description": "Haal labelinformatie op - lijst alle labels of haal een specifieke op via ID."
|
|
543
543
|
},
|
|
544
544
|
"ha_config_get_scene": {
|
|
545
|
-
"title": "
|
|
546
|
-
"description": "Haal de
|
|
545
|
+
"title": "Scènes ophalen of zoeken",
|
|
546
|
+
"description": "Haal de volledige configuratie van een scène op, of lijst en zoek scènes zonder scene_id."
|
|
547
547
|
},
|
|
548
548
|
"ha_config_get_script": {
|
|
549
549
|
"title": "Haal Script Config op",
|
|
@@ -599,7 +599,7 @@
|
|
|
599
599
|
},
|
|
600
600
|
"ha_config_set_calendar_event": {
|
|
601
601
|
"title": "Maak of Werk Kalendergebeurtenis bij",
|
|
602
|
-
"description": "Maak een nieuwe gebeurtenis in een kalender."
|
|
602
|
+
"description": "Maak een nieuwe gebeurtenis aan in een kalender of werk een bestaande bij."
|
|
603
603
|
},
|
|
604
604
|
"ha_config_set_category": {
|
|
605
605
|
"title": "Maak of Werk Categorie bij",
|
{ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/pl.json
RENAMED
|
@@ -542,8 +542,8 @@
|
|
|
542
542
|
"description": "Pobierz informacje o etykiecie - wyświetl wszystkie etykiety lub pobierz konkretną po ID."
|
|
543
543
|
},
|
|
544
544
|
"ha_config_get_scene": {
|
|
545
|
-
"title": "Pobierz
|
|
546
|
-
"description": "Pobierz konfigurację sceny
|
|
545
|
+
"title": "Pobierz lub znajdź sceny",
|
|
546
|
+
"description": "Pobierz pełną konfigurację sceny lub wyświetl listę i wyszukaj sceny bez użycia scene_id."
|
|
547
547
|
},
|
|
548
548
|
"ha_config_get_script": {
|
|
549
549
|
"title": "Pobierz konfigurację skryptu",
|
|
@@ -599,7 +599,7 @@
|
|
|
599
599
|
},
|
|
600
600
|
"ha_config_set_calendar_event": {
|
|
601
601
|
"title": "Utwórz lub zaktualizuj wydarzenie w kalendarzu",
|
|
602
|
-
"description": "Utwórz nowe wydarzenie w kalendarzu."
|
|
602
|
+
"description": "Utwórz nowe wydarzenie w kalendarzu lub zaktualizuj istniejące."
|
|
603
603
|
},
|
|
604
604
|
"ha_config_set_category": {
|
|
605
605
|
"title": "Utwórz lub zaktualizuj kategorię",
|
{ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/ru.json
RENAMED
|
@@ -573,8 +573,8 @@
|
|
|
573
573
|
"description": "Показать метки или сведения о конкретной метке."
|
|
574
574
|
},
|
|
575
575
|
"ha_config_get_scene": {
|
|
576
|
-
"title": "Получить
|
|
577
|
-
"description": "Получить конфигурацию сцены
|
|
576
|
+
"title": "Получить или найти сцены",
|
|
577
|
+
"description": "Получить полную конфигурацию сцены либо получить список и выполнить поиск сцен без использования scene_id."
|
|
578
578
|
},
|
|
579
579
|
"ha_config_get_script": {
|
|
580
580
|
"title": "Получить скрипт",
|
|
@@ -630,7 +630,7 @@
|
|
|
630
630
|
},
|
|
631
631
|
"ha_config_set_calendar_event": {
|
|
632
632
|
"title": "Создать или изменить событие",
|
|
633
|
-
"description": "Создать новое или обновить
|
|
633
|
+
"description": "Создать новое событие в календаре или обновить существующее."
|
|
634
634
|
},
|
|
635
635
|
"ha_config_set_category": {
|
|
636
636
|
"title": "Создать или изменить категорию",
|
{ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/sv.json
RENAMED
|
@@ -542,8 +542,8 @@
|
|
|
542
542
|
"description": "Hämta etikettinformation - lista alla etiketter eller hämta en specifik med ID."
|
|
543
543
|
},
|
|
544
544
|
"ha_config_get_scene": {
|
|
545
|
-
"title": "Hämta
|
|
546
|
-
"description": "Hämta
|
|
545
|
+
"title": "Hämta eller hitta scener",
|
|
546
|
+
"description": "Hämta en scens kompletta konfiguration, eller lista och sök efter scener utan scene_id."
|
|
547
547
|
},
|
|
548
548
|
"ha_config_get_script": {
|
|
549
549
|
"title": "Hämta Skriptkonfiguration",
|
|
@@ -599,7 +599,7 @@
|
|
|
599
599
|
},
|
|
600
600
|
"ha_config_set_calendar_event": {
|
|
601
601
|
"title": "Skapa eller Uppdatera Kalenderhändelse",
|
|
602
|
-
"description": "Skapa en ny händelse i en kalender."
|
|
602
|
+
"description": "Skapa en ny händelse i en kalender eller uppdatera en befintlig."
|
|
603
603
|
},
|
|
604
604
|
"ha_config_set_category": {
|
|
605
605
|
"title": "Skapa eller Uppdatera Kategori",
|
{ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/zh-Hans.json
RENAMED
|
@@ -573,8 +573,8 @@
|
|
|
573
573
|
"description": "获取标签信息——列出所有标签或按 ID 查看特定标签。"
|
|
574
574
|
},
|
|
575
575
|
"ha_config_get_scene": {
|
|
576
|
-
"title": "
|
|
577
|
-
"description": "
|
|
576
|
+
"title": "获取或查找场景",
|
|
577
|
+
"description": "获取场景的完整配置,或者在不提供 scene_id 的情况下列出并搜索场景。"
|
|
578
578
|
},
|
|
579
579
|
"ha_config_get_script": {
|
|
580
580
|
"title": "获取脚本配置",
|
|
@@ -630,7 +630,7 @@
|
|
|
630
630
|
},
|
|
631
631
|
"ha_config_set_calendar_event": {
|
|
632
632
|
"title": "创建或更新日历事件",
|
|
633
|
-
"description": "
|
|
633
|
+
"description": "在日历中创建新事件,或更新现有事件。"
|
|
634
634
|
},
|
|
635
635
|
"ha_config_set_category": {
|
|
636
636
|
"title": "创建或更新类别",
|
{ha_mcp_dev-8.5.0.dev2694 → ha_mcp_dev-8.5.0.dev2699}/src/ha_mcp/settings_ui/locales/zh-Hant.json
RENAMED
|
@@ -542,8 +542,8 @@
|
|
|
542
542
|
"description": "取得標籤資訊 - 列出所有標籤,或透過 ID 取得特定標籤。"
|
|
543
543
|
},
|
|
544
544
|
"ha_config_get_scene": {
|
|
545
|
-
"title": "
|
|
546
|
-
"description": "
|
|
545
|
+
"title": "取得或尋找場景",
|
|
546
|
+
"description": "取得場景的完整設定,或在沒有 scene_id 的情況下列出並搜尋場景。"
|
|
547
547
|
},
|
|
548
548
|
"ha_config_get_script": {
|
|
549
549
|
"title": "取得腳本設定",
|
|
@@ -599,7 +599,7 @@
|
|
|
599
599
|
},
|
|
600
600
|
"ha_config_set_calendar_event": {
|
|
601
601
|
"title": "建立或更新行事曆事件",
|
|
602
|
-
"description": "
|
|
602
|
+
"description": "在行事曆中建立新事件,或更新現有事件。"
|
|
603
603
|
},
|
|
604
604
|
"ha_config_set_category": {
|
|
605
605
|
"title": "建立或更新分類",
|