ha-mcp-dev 8.4.3.dev2542__tar.gz → 8.4.3.dev2544__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.dev2542/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.4.3.dev2544}/PKG-INFO +1 -1
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/pyproject.toml +1 -1
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/backup_manager.py +54 -6
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/config.py +5 -5
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/en.json +1 -1
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/settings.js +1 -1
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/MANIFEST.in +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/setup.cfg +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/evals/area-target-over-entity-list/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/evals/arrive-home-automation/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/evals/assist-shortcut-card/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/evals/avg-temperature/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/evals/backup-deletion-confirmation/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/evals/blueprint-authoring/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/evals/button-event-entity/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/evals/device-id-trigger-migration/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/evals/helper-flow-fields-not-platform-yaml/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/evals/media-player-song/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/evals/motion-light-automation-mode/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/evals/rename-entity-impact-analysis/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/evals/template-attributes-yaml-exception/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/evals/timer-finished-automation/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/evals/vacuum-last-clean/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/scripts/check_eval_cases.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/blueprint_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/tests/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/tests/test_constants.py +0 -0
- {ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/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.dev2544"
|
|
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
|
|
@@ -7,7 +7,11 @@ Storage path resolution
|
|
|
7
7
|
-----------------------
|
|
8
8
|
``Settings.auto_backup_dir`` overrides; otherwise defaults to
|
|
9
9
|
``/data/ha_mcp_backups`` in the add-on (SUPERVISOR_TOKEN set + ``/data``
|
|
10
|
-
exists), else
|
|
10
|
+
exists), else ``<data dir>/backups`` where the data dir is what
|
|
11
|
+
``utils.data_paths.get_data_dir`` resolves (``HA_MCP_CONFIG_DIR``,
|
|
12
|
+
``~/.ha-mcp``, or the tmpdir fallback). Installs that still hold snapshots
|
|
13
|
+
under the pre-#2372 default ``${XDG_DATA_HOME:-~/.local/share}/ha_mcp/backups``
|
|
14
|
+
keep using that directory; see ``_resolve_default_dir``.
|
|
11
15
|
|
|
12
16
|
File format
|
|
13
17
|
-----------
|
|
@@ -55,6 +59,7 @@ import yaml # type: ignore[import-untyped]
|
|
|
55
59
|
from fastmcp.exceptions import ToolError
|
|
56
60
|
|
|
57
61
|
from .client.rest_client import HomeAssistantConnectionError, HomeAssistantError
|
|
62
|
+
from .utils.data_paths import get_data_dir
|
|
58
63
|
|
|
59
64
|
logger = logging.getLogger(__name__)
|
|
60
65
|
|
|
@@ -263,17 +268,60 @@ def _now_iso() -> str:
|
|
|
263
268
|
return datetime.now(UTC).isoformat()
|
|
264
269
|
|
|
265
270
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
+
# Add-on default. Named in the add-on option descriptions, so it stays put.
|
|
272
|
+
_ADDON_BACKUP_DIR = Path("/data/ha_mcp_backups")
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
def _legacy_default_dir() -> Path:
|
|
276
|
+
"""The non-add-on default before #2372: XDG user-data, outside the data dir."""
|
|
271
277
|
xdg = os.environ.get("XDG_DATA_HOME")
|
|
272
278
|
if xdg:
|
|
273
279
|
return Path(xdg) / "ha_mcp" / "backups"
|
|
274
280
|
return (Path.home() / ".local" / "share" / "ha_mcp" / "backups").resolve()
|
|
275
281
|
|
|
276
282
|
|
|
283
|
+
def _holds_files(path: Path) -> bool:
|
|
284
|
+
"""Whether ``path`` is a directory with at least one entry.
|
|
285
|
+
|
|
286
|
+
An unreadable or missing directory counts as empty: nothing in it can be
|
|
287
|
+
listed or restored from, so there is nothing to keep using.
|
|
288
|
+
"""
|
|
289
|
+
try:
|
|
290
|
+
return any(path.iterdir())
|
|
291
|
+
except OSError:
|
|
292
|
+
return False
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
def _resolve_default_dir() -> Path:
|
|
296
|
+
"""Pick a sane default backup directory for the current deployment mode.
|
|
297
|
+
|
|
298
|
+
Add-on (Supervisor sets ``SUPERVISOR_TOKEN`` and ``/data`` exists):
|
|
299
|
+
``/data/ha_mcp_backups``. Otherwise ``backups/`` inside the data dir, the
|
|
300
|
+
directory that already holds the settings and that every documented
|
|
301
|
+
Docker recipe persists as the ``ha-mcp-data`` volume. The previous default,
|
|
302
|
+
``${XDG_DATA_HOME:-~/.local/share}/ha_mcp/backups``, sat outside that
|
|
303
|
+
volume: under a ``read_only`` root it was EROFS, which fails the mandatory
|
|
304
|
+
pre-write snapshots closed, and on a writable root the snapshots were
|
|
305
|
+
discarded with the container (#2372).
|
|
306
|
+
|
|
307
|
+
An install that already holds snapshots under the previous default keeps
|
|
308
|
+
using it so its restore points stay listed and rotation keeps counting
|
|
309
|
+
them; only installs with nothing there move to the data dir.
|
|
310
|
+
"""
|
|
311
|
+
if os.environ.get("SUPERVISOR_TOKEN") and _ADDON_BACKUP_DIR.parent.is_dir():
|
|
312
|
+
return _ADDON_BACKUP_DIR
|
|
313
|
+
legacy = _legacy_default_dir()
|
|
314
|
+
if _holds_files(legacy):
|
|
315
|
+
logger.info(
|
|
316
|
+
"Auto-backup: keeping existing backup dir %s (new installs default "
|
|
317
|
+
"to %s; set HAMCP_BACKUP_DIR to choose explicitly)",
|
|
318
|
+
legacy,
|
|
319
|
+
get_data_dir() / "backups",
|
|
320
|
+
)
|
|
321
|
+
return legacy
|
|
322
|
+
return get_data_dir() / "backups"
|
|
323
|
+
|
|
324
|
+
|
|
277
325
|
# Sentinel returned by ``BackupManager._fetch_config_for_snapshot`` when there
|
|
278
326
|
# is nothing to snapshot — a handled transient fetch failure (already logged),
|
|
279
327
|
# or a None config for an entity that did not exist. Distinct from any real
|
|
@@ -400,7 +400,7 @@ class Settings(BaseSettings):
|
|
|
400
400
|
|
|
401
401
|
# Backup directory override. Empty ("") resolves at runtime to a
|
|
402
402
|
# deployment-mode default: ``/data/ha_mcp_backups`` in the add-on,
|
|
403
|
-
# otherwise
|
|
403
|
+
# otherwise ``<data dir>/backups`` (see ``backup_manager._resolve_default_dir``).
|
|
404
404
|
auto_backup_dir: str = Field("", alias="HAMCP_BACKUP_DIR")
|
|
405
405
|
|
|
406
406
|
# Calendar event backups query an ahead-of-now window to locate the
|
|
@@ -776,8 +776,8 @@ FEATURE_FLAG_FIELDS: tuple[FeatureFlagField, ...] = (
|
|
|
776
776
|
)
|
|
777
777
|
|
|
778
778
|
# Override-file location is the same data dir that holds tool_config.json
|
|
779
|
-
# (resolved via ``utils.data_paths.get_data_dir`` —
|
|
780
|
-
#
|
|
779
|
+
# (resolved via ``utils.data_paths.get_data_dir`` — ``HA_MCP_CONFIG_DIR``,
|
|
780
|
+
# addon ``/data``, ``~/.ha-mcp``, or a tmpdir fallback).
|
|
781
781
|
# Imported lazily inside helpers to avoid a circular import at module
|
|
782
782
|
# load.
|
|
783
783
|
_FEATURE_FLAG_OVERRIDE_FILENAME = "feature_flags.json"
|
|
@@ -1656,8 +1656,8 @@ BACKUP_OVERRIDE_FIELDS: tuple[BackupOverrideField, ...] = (
|
|
|
1656
1656
|
)
|
|
1657
1657
|
|
|
1658
1658
|
# Override-file location is the same data dir that holds tool_config.json
|
|
1659
|
-
# (resolved via ``utils.data_paths.get_data_dir`` —
|
|
1660
|
-
#
|
|
1659
|
+
# (resolved via ``utils.data_paths.get_data_dir`` — ``HA_MCP_CONFIG_DIR``,
|
|
1660
|
+
# addon ``/data``, ``~/.ha-mcp``, or a tmpdir fallback).
|
|
1661
1661
|
# Imported lazily inside helpers to avoid a circular import at module
|
|
1662
1662
|
# load (``utils.data_paths`` imports from ``_version`` which imports
|
|
1663
1663
|
# from ``config`` transitively in some test layouts).
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/en.json
RENAMED
|
@@ -251,7 +251,7 @@
|
|
|
251
251
|
"backup.fields.auto_backup_retain_per_entity.label": "Retain per entity",
|
|
252
252
|
"backup.fields.auto_backup_retain_per_entity.help": "Maximum snapshots kept per entity (1–10000). Older ones rotate out.",
|
|
253
253
|
"backup.fields.auto_backup_dir.label": "Backup directory override",
|
|
254
|
-
"backup.fields.auto_backup_dir.help": "Leave empty
|
|
254
|
+
"backup.fields.auto_backup_dir.help": "Leave empty for the default: /data/ha_mcp_backups in the App (add-on), otherwise the backups/ subdirectory of the ha-mcp data directory; an install that already holds snapshots under the earlier default keeps using it. The directory in use is shown in the backup status. Or enter an absolute path.",
|
|
255
255
|
"backup.fields.auto_backup_calendar_lookahead_days.label": "Calendar lookahead (days)",
|
|
256
256
|
"backup.fields.auto_backup_calendar_lookahead_days.help": "How far ahead to query calendar events for pre-edit snapshots. Range 1–365.",
|
|
257
257
|
"backup.fields.enable_snapshot_delete.label": "Allow snapshot deletion",
|
|
@@ -1438,7 +1438,7 @@ const BACKUP_FIELD_LABELS = {
|
|
|
1438
1438
|
},
|
|
1439
1439
|
auto_backup_dir: {
|
|
1440
1440
|
label: 'Backup directory override',
|
|
1441
|
-
help: '
|
|
1441
|
+
help: 'Leave empty for the default: /data/ha_mcp_backups in the App (add-on), otherwise the backups/ subdirectory of the ha-mcp data directory; an install that already holds snapshots under the earlier default keeps using it. The directory in use is shown in the backup status. Or enter an absolute path.',
|
|
1442
1442
|
},
|
|
1443
1443
|
auto_backup_calendar_lookahead_days: {
|
|
1444
1444
|
label: 'Calendar lookahead (days)',
|
|
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.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/VENDORED
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/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.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/connection.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/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.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/frames.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/headers.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/http11.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/imports.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/legacy/auth.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/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.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/legacy/http.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/legacy/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/protocol.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/proxy.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/py.typed
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/streams.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/sync/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/sync/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/sync/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/sync/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/sync/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/sync/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/trio/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/trio/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/trio/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/trio/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/trio/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/trio/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/typing.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/_vendor/websockets/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/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
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/client/supervisor_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/client/websocket_listener.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/dashboard_screenshot/content.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/dashboard_screenshot/paths.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/dashboard_screenshot/provision.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/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
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/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
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_handlers_advanced.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_handlers_backups.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_handlers_fs.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_handlers_server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_handlers_theme.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_handlers_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_locale_policy.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/_persistence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/README.md
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/cs.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/de.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/eo.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/es.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2542 → ha_mcp_dev-8.4.3.dev2544}/src/ha_mcp/settings_ui/locales/fr.json
RENAMED
|
File without changes
|