ha-mcp-dev 8.4.3.dev2605__tar.gz → 8.4.3.dev2611__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.4.3.dev2605/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.4.3.dev2611}/PKG-INFO +1 -1
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/pyproject.toml +1 -1
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/server.py +2 -1
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/_i18n.py +13 -5
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/README.md +1 -1
- ha_mcp_dev-8.4.3.dev2611/src/ha_mcp/settings_ui/locales/zh-Hant.json +26 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_config_automations.py +62 -13
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp_dev.egg-info/SOURCES.txt +1 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/MANIFEST.in +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/setup.cfg +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/evals/area-target-over-entity-list/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/evals/arrive-home-automation/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/evals/assist-shortcut-card/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/evals/avg-temperature/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/evals/backup-deletion-confirmation/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/evals/blueprint-authoring/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/evals/button-event-entity/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/evals/device-id-trigger-migration/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/evals/helper-flow-fields-not-platform-yaml/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/evals/media-player-song/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/evals/motion-light-automation-mode/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/evals/rename-entity-impact-analysis/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/evals/template-attributes-yaml-exception/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/evals/timer-finished-automation/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/evals/vacuum-last-clean/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/scripts/check_eval_cases.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/blueprint_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/utils/dashboard_patch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/tests/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/tests/test_constants.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/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.4.3.
|
|
7
|
+
version = "8.4.3.dev2611"
|
|
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
|
|
@@ -727,7 +727,8 @@ class HomeAssistantSmartMCPServer:
|
|
|
727
727
|
"ha_config_get_automation), or `take_control_of_blueprint` "
|
|
728
728
|
"to convert a blueprint-backed automation into an editable "
|
|
729
729
|
"standalone one (the UI's Take control action). Omit "
|
|
730
|
-
"`identifier` to create a new automation
|
|
730
|
+
"`identifier` to create a new automation. Reusing an identifier targets "
|
|
731
|
+
"the same automation; changing its alias requires config_hash from a prior read.\n\n"
|
|
731
732
|
"For schema details, examples, and native-vs-template "
|
|
732
733
|
"guidance, see ha_get_skill_guide or your locally "
|
|
733
734
|
"installed skills."
|
|
@@ -521,11 +521,19 @@ def normalize_locale(
|
|
|
521
521
|
base = candidate.split("-", 1)[0]
|
|
522
522
|
if base in catalogs:
|
|
523
523
|
return base
|
|
524
|
-
if base == "zh"
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
524
|
+
if base == "zh":
|
|
525
|
+
subtags = candidate.split("-")[1:]
|
|
526
|
+
script = next((tag for tag in subtags if tag in {"hans", "hant"}), None)
|
|
527
|
+
if script and f"zh-{script}" in catalogs:
|
|
528
|
+
return f"zh-{script}"
|
|
529
|
+
regions = set(subtags)
|
|
530
|
+
if "zh-hant" in catalogs and regions.intersection({"tw", "hk", "mo"}):
|
|
531
|
+
return "zh-hant"
|
|
532
|
+
# Bare "zh" follows the long-standing Simplified Chinese fallback;
|
|
533
|
+
# explicit script and region tags select their matching catalog.
|
|
534
|
+
if "zh-hans" in catalogs and (
|
|
535
|
+
candidate == "zh" or regions.intersection({"cn", "sg"})
|
|
536
|
+
):
|
|
529
537
|
return "zh-hans"
|
|
530
538
|
return None
|
|
531
539
|
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/settings_ui/locales/README.md
RENAMED
|
@@ -25,7 +25,7 @@ Home Assistant language code used across every corresponding file:
|
|
|
25
25
|
- `homeassistant-addon-dev/translations/<code>.yaml` (generated)
|
|
26
26
|
|
|
27
27
|
<!-- Keep the following marker line intact; locale parity tests parse it. -->
|
|
28
|
-
The current code set `cs`, `de`, `eo`, `es`, `fr`, `it`, `ko`, `nl`, `pl`, `ru`, `sv`, `tlh`, and `zh-
|
|
28
|
+
The current code set `cs`, `de`, `eo`, `es`, `fr`, `it`, `ko`, `nl`, `pl`, `ru`, `sv`, `tlh`, `zh-Hans`, and `zh-Hant` names every file:
|
|
29
29
|
the parity test keeps this documentation aligned with the shipped catalogs.
|
|
30
30
|
|
|
31
31
|
Klingon (`tlh`) is the one best-effort exception. Its catalogs may be edited
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"native_name": "繁體中文",
|
|
4
|
+
"dir": "ltr"
|
|
5
|
+
},
|
|
6
|
+
"messages": {
|
|
7
|
+
"accessibility.storage_blocked": "您的瀏覽器正在阻止網站儲存;選擇僅對本次會話生效。",
|
|
8
|
+
"actions.approve": "核准",
|
|
9
|
+
"actions.deny": "拒絕",
|
|
10
|
+
"notice.restart.standalone": "⚠ 更改已儲存。重新啟動 ha-mcp 程序,然後在您的 AI 用戶端中重新整理 MCP 工具列表。",
|
|
11
|
+
"policies.operators.contains": "包含",
|
|
12
|
+
"policies.operators.eq": "等於",
|
|
13
|
+
"policies.operators.exists": "存在",
|
|
14
|
+
"policies.operators.exists_long": "存在(任意值)",
|
|
15
|
+
"policies.operators.gt": "大於",
|
|
16
|
+
"policies.operators.in": "屬於其中之一",
|
|
17
|
+
"policies.operators.lt": "小於",
|
|
18
|
+
"policies.operators.neq": "不等於",
|
|
19
|
+
"policies.operators.not_in": "不屬於其中之一",
|
|
20
|
+
"policies.operators.regex": "匹配正規表示式",
|
|
21
|
+
"policies.pending.already_decided": "此核准已被{decision},可能由另一個分頁或會話完成。",
|
|
22
|
+
"policies.pending.decision.approved": "核准",
|
|
23
|
+
"policies.pending.decision.denied": "拒絕",
|
|
24
|
+
"visibility.errors.conflict": "設定已在另一個分頁或會話中被更改。請重新載入頁面,然後重新應用您的更改。"
|
|
25
|
+
}
|
|
26
|
+
}
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
@@ -543,8 +543,9 @@ class AutomationConfigTools:
|
|
|
543
543
|
identifier: Annotated[
|
|
544
544
|
str | None,
|
|
545
545
|
Field(
|
|
546
|
-
description="
|
|
547
|
-
"
|
|
546
|
+
description="Target automation entity_id or HA config 'id' (unique_id). "
|
|
547
|
+
"Omit for creation with a generated ID. Values such as 'new' are literal IDs, not placeholders. "
|
|
548
|
+
"Required for python_transform.",
|
|
548
549
|
default=None,
|
|
549
550
|
),
|
|
550
551
|
] = None,
|
|
@@ -567,7 +568,8 @@ class AutomationConfigTools:
|
|
|
567
568
|
Field(
|
|
568
569
|
description="Config hash from ha_config_get_automation for optimistic locking. "
|
|
569
570
|
"REQUIRED for python_transform (validates automation unchanged). "
|
|
570
|
-
"
|
|
571
|
+
"Required when a config update changes an existing automation's alias. "
|
|
572
|
+
"Otherwise optional for config updates (validates before full replacement if provided).",
|
|
571
573
|
),
|
|
572
574
|
] = None,
|
|
573
575
|
take_control_of_blueprint: Annotated[
|
|
@@ -673,7 +675,11 @@ class AutomationConfigTools:
|
|
|
673
675
|
- Add trigger: python_transform="config['triggers'].append({'trigger': 'state', 'entity_id': 'binary_sensor.motion', 'to': 'on'})"
|
|
674
676
|
- Remove last action: python_transform="config['actions'].pop()"
|
|
675
677
|
|
|
676
|
-
|
|
678
|
+
Omit identifier and config['id'] to create a new automation with a generated ID.
|
|
679
|
+
A previously unused raw ID can also create an automation with that specific ID.
|
|
680
|
+
Reusing an identifier targets the same automation, even if the alias changes.
|
|
681
|
+
To intentionally rename or replace it, first read it with ha_config_get_automation
|
|
682
|
+
and pass its config_hash. A changed alias without that hash is rejected before writing.
|
|
677
683
|
|
|
678
684
|
AUTOMATION TYPES:
|
|
679
685
|
|
|
@@ -732,8 +738,10 @@ class AutomationConfigTools:
|
|
|
732
738
|
})
|
|
733
739
|
|
|
734
740
|
Update existing automation:
|
|
741
|
+
current = ha_config_get_automation(identifier="automation.morning_routine")
|
|
735
742
|
ha_config_set_automation(
|
|
736
743
|
identifier="automation.morning_routine",
|
|
744
|
+
config_hash=current["config_hash"],
|
|
737
745
|
config={
|
|
738
746
|
"alias": "Updated Morning Routine",
|
|
739
747
|
"triggers": [{"trigger": "time", "at": "06:30:00"}],
|
|
@@ -900,15 +908,18 @@ class AutomationConfigTools:
|
|
|
900
908
|
# (trigger -> triggers, action -> actions, condition -> conditions).
|
|
901
909
|
config_dict = _normalize_automation_config(config_dict)
|
|
902
910
|
|
|
903
|
-
#
|
|
904
|
-
#
|
|
905
|
-
#
|
|
906
|
-
# the no-hash update path (raw identifier resolved once, in upsert).
|
|
911
|
+
# Both the hash check and alias guard read the resolved storage key.
|
|
912
|
+
# Reuse it for the write to avoid a second entity-ID lookup (#1813).
|
|
913
|
+
# Creation and responses without an id retain the existing fallback.
|
|
907
914
|
resolved_id: str | None = None
|
|
908
915
|
if identifier and config_hash:
|
|
909
916
|
_, resolved_id = await self._fetch_and_verify_hash(
|
|
910
917
|
identifier, config_hash, "set"
|
|
911
918
|
)
|
|
919
|
+
elif identifier:
|
|
920
|
+
resolved_id = await self._guard_alias_replacement(
|
|
921
|
+
identifier, config_dict
|
|
922
|
+
)
|
|
912
923
|
|
|
913
924
|
self._validate_required_fields(config_dict, identifier)
|
|
914
925
|
bp_warnings = _check_best_practices(config_dict)
|
|
@@ -1014,11 +1025,11 @@ class AutomationConfigTools:
|
|
|
1014
1025
|
"""Upsert, threading a pre-resolved unique_id when available.
|
|
1015
1026
|
|
|
1016
1027
|
When ``resolved_id`` is set the caller already resolved ``identifier``
|
|
1017
|
-
(via
|
|
1028
|
+
(via the hash check or alias guard); pass it with ``_resolved=True`` so the
|
|
1018
1029
|
REST client skips the redundant entity_id→unique_id lookup (issue #1813
|
|
1019
1030
|
Phase 0). Otherwise fall back to the raw ``identifier`` and let the REST
|
|
1020
|
-
client resolve —
|
|
1021
|
-
|
|
1031
|
+
client resolve — creation and fetched configs without an id use this
|
|
1032
|
+
fallback.
|
|
1022
1033
|
"""
|
|
1023
1034
|
result: dict[str, Any]
|
|
1024
1035
|
if resolved_id is not None:
|
|
@@ -1205,8 +1216,8 @@ class AutomationConfigTools:
|
|
|
1205
1216
|
more: Home Assistant goes on counting the automation as a user of that
|
|
1206
1217
|
blueprint until it is removed, so there is no release to wait for.
|
|
1207
1218
|
|
|
1208
|
-
``resolved_id`` (set
|
|
1209
|
-
|
|
1219
|
+
``resolved_id`` (set when the hash check or alias guard fetched an id)
|
|
1220
|
+
is threaded to the upsert so it skips the redundant
|
|
1210
1221
|
re-resolve; None falls back to resolving inside the REST client.
|
|
1211
1222
|
"""
|
|
1212
1223
|
result = await self._upsert_automation(config_dict, identifier, resolved_id)
|
|
@@ -1309,6 +1320,44 @@ class AutomationConfigTools:
|
|
|
1309
1320
|
and entry["entity_id"].startswith("automation.")
|
|
1310
1321
|
][:10]
|
|
1311
1322
|
|
|
1323
|
+
async def _guard_alias_replacement(
|
|
1324
|
+
self, identifier: str, config: dict[str, Any]
|
|
1325
|
+
) -> str | None:
|
|
1326
|
+
"""Require a prior read before replacing a differently named automation.
|
|
1327
|
+
|
|
1328
|
+
Return the fetched storage id for reuse by the write, when available.
|
|
1329
|
+
This catches sequential ID reuse. The REST read and write are separate
|
|
1330
|
+
requests, so it does not provide atomic protection against other writers.
|
|
1331
|
+
"""
|
|
1332
|
+
if "alias" not in config:
|
|
1333
|
+
return None # Required-field validation supplies the actionable error.
|
|
1334
|
+
try:
|
|
1335
|
+
current = await self._client.get_automation_config(identifier)
|
|
1336
|
+
except HomeAssistantAPIError as exc:
|
|
1337
|
+
if exc.status_code == 404 and not identifier.startswith("automation."):
|
|
1338
|
+
return None # Preserve intentional creation with a caller-chosen ID.
|
|
1339
|
+
# Entity-ID resolution also maps lookup failures to 404. Never retry
|
|
1340
|
+
# those as creation: a recovered lookup could overwrite an unchecked target.
|
|
1341
|
+
raise
|
|
1342
|
+
if current.get("alias") != config["alias"]:
|
|
1343
|
+
raise_tool_error(
|
|
1344
|
+
create_error_response(
|
|
1345
|
+
ErrorCode.VALIDATION_INVALID_PARAMETER,
|
|
1346
|
+
f"Automation {identifier!r} already exists as {current.get('alias')!r}. "
|
|
1347
|
+
f"This write would replace it with {config['alias']!r}. Nothing was written.",
|
|
1348
|
+
context={"identifier": identifier, "parameter": "config_hash"},
|
|
1349
|
+
suggestions=[
|
|
1350
|
+
"Omit identifier and remove config['id'] to create a separate automation.",
|
|
1351
|
+
(
|
|
1352
|
+
"For an intentional rename or replacement, call ha_config_get_automation "
|
|
1353
|
+
"for this identifier, inspect its config, and resubmit with its config_hash."
|
|
1354
|
+
),
|
|
1355
|
+
],
|
|
1356
|
+
)
|
|
1357
|
+
)
|
|
1358
|
+
raw_id = current.get("id")
|
|
1359
|
+
return str(raw_id) if raw_id is not None else None
|
|
1360
|
+
|
|
1312
1361
|
async def _raise_automation_not_found(self, identifier: str) -> None:
|
|
1313
1362
|
"""Raise a structured RESOURCE_NOT_FOUND ToolError for a missing automation.
|
|
1314
1363
|
|
|
@@ -180,6 +180,7 @@ src/ha_mcp/settings_ui/locales/ru.json
|
|
|
180
180
|
src/ha_mcp/settings_ui/locales/sv.json
|
|
181
181
|
src/ha_mcp/settings_ui/locales/tlh.json
|
|
182
182
|
src/ha_mcp/settings_ui/locales/zh-Hans.json
|
|
183
|
+
src/ha_mcp/settings_ui/locales/zh-Hant.json
|
|
183
184
|
src/ha_mcp/tools/__init__.py
|
|
184
185
|
src/ha_mcp/tools/auto_backup.py
|
|
185
186
|
src/ha_mcp/tools/backup.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/VENDORED
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/__main__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/connection.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/frames.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/headers.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/http11.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/imports.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/legacy/auth.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/legacy/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/legacy/http.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/legacy/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/protocol.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/proxy.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/py.typed
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/streams.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/sync/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/sync/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/sync/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/sync/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/sync/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/sync/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/trio/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/trio/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/trio/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/trio/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/trio/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/trio/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/typing.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/_vendor/websockets/version.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/client/supervisor_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/client/websocket_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/dashboard_screenshot/content.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/dashboard_screenshot/paths.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/dashboard_screenshot/provision.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/dashboard_screenshot/theme_guard.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2611}/src/ha_mcp/resources/skills-vendor/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|