ha-mcp-dev 8.4.3.dev2605__tar.gz → 8.4.3.dev2608__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.dev2608}/PKG-INFO +1 -1
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/pyproject.toml +1 -1
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/server.py +2 -1
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_config_automations.py +62 -13
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/MANIFEST.in +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/setup.cfg +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/blueprint_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/utils/dashboard_patch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/tests/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/tests/test_constants.py +0 -0
- {ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/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.dev2608"
|
|
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."
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/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
|
|
|
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.dev2608}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/VENDORED
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/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.dev2608}/src/ha_mcp/_vendor/websockets/client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/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.dev2608}/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.dev2608}/src/ha_mcp/_vendor/websockets/frames.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/headers.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/http11.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/src/ha_mcp/_vendor/websockets/protocol.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/proxy.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/py.typed
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/_vendor/websockets/streams.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/src/ha_mcp/_vendor/websockets/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/dashboard_screenshot/content.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/dashboard_screenshot/paths.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/dashboard_screenshot/provision.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/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.dev2608}/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.dev2608}/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.dev2608}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/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
|
|
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.dev2608}/src/ha_mcp/settings_ui/_handlers_advanced.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_handlers_backups.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_handlers_fs.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_handlers_server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_handlers_theme.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_handlers_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_locale_policy.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2605 → ha_mcp_dev-8.4.3.dev2608}/src/ha_mcp/settings_ui/_persistence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|