ha-mcp-dev 8.4.0.dev2509__tar.gz → 8.4.0.dev2510__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.0.dev2509/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.4.0.dev2510}/PKG-INFO +1 -1
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/pyproject.toml +1 -1
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_service.py +73 -12
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/LICENSE +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/MANIFEST.in +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/README.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/setup.cfg +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/evals/area-target-over-entity-list/case.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/evals/arrive-home-automation/case.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/evals/assist-shortcut-card/case.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/evals/avg-temperature/case.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/evals/backup-deletion-confirmation/case.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/evals/blueprint-authoring/case.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/evals/button-event-entity/case.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/evals/device-id-trigger-migration/case.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/evals/helper-flow-fields-not-platform-yaml/case.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/evals/media-player-song/case.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/evals/motion-light-automation-mode/case.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/evals/rename-entity-impact-analysis/case.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/evals/template-attributes-yaml-exception/case.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/evals/timer-finished-automation/case.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/evals/vacuum-last-clean/case.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/scripts/check_eval_cases.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/tests/__init__.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/tests/test_constants.py +0 -0
- {ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/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.0.
|
|
7
|
+
version = "8.4.0.dev2510"
|
|
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
|
|
@@ -1824,12 +1824,74 @@ class ServiceTools:
|
|
|
1824
1824
|
@log_tool_usage
|
|
1825
1825
|
async def ha_call_service(
|
|
1826
1826
|
self,
|
|
1827
|
-
domain:
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1827
|
+
domain: Annotated[
|
|
1828
|
+
str | None,
|
|
1829
|
+
Field(
|
|
1830
|
+
description=(
|
|
1831
|
+
"Service domain (e.g. 'light', 'climate', 'automation'). "
|
|
1832
|
+
"Required for a service call; must be omitted when ws_command "
|
|
1833
|
+
"is set."
|
|
1834
|
+
),
|
|
1835
|
+
),
|
|
1836
|
+
] = None,
|
|
1837
|
+
service: Annotated[
|
|
1838
|
+
str | None,
|
|
1839
|
+
Field(
|
|
1840
|
+
description=(
|
|
1841
|
+
"Service name within domain (e.g. 'turn_on', 'set_temperature', "
|
|
1842
|
+
"'trigger'). Required for a service call; must be omitted when "
|
|
1843
|
+
"ws_command is set."
|
|
1844
|
+
),
|
|
1845
|
+
),
|
|
1846
|
+
] = None,
|
|
1847
|
+
entity_id: Annotated[
|
|
1848
|
+
str | None,
|
|
1849
|
+
Field(
|
|
1850
|
+
description=(
|
|
1851
|
+
"Entity ID(s) the service call targets — one ID "
|
|
1852
|
+
"('light.living_room') or several comma-separated "
|
|
1853
|
+
"('light.a,light.b'). Optional for services that don't target "
|
|
1854
|
+
"a specific entity. Must be omitted when ws_command is set."
|
|
1855
|
+
),
|
|
1856
|
+
),
|
|
1857
|
+
] = None,
|
|
1858
|
+
data: Annotated[
|
|
1859
|
+
dict[str, Any] | None,
|
|
1860
|
+
JSON_STRING_COERCION,
|
|
1861
|
+
Field(
|
|
1862
|
+
description=(
|
|
1863
|
+
"Extra service-call parameters beyond entity_id (e.g. "
|
|
1864
|
+
"{'temperature': 22} for climate.set_temperature). Also carries "
|
|
1865
|
+
"the raw command payload when ws_command is set. If entity_id "
|
|
1866
|
+
"is also present in data, the entity_id parameter wins."
|
|
1867
|
+
),
|
|
1868
|
+
),
|
|
1869
|
+
] = None,
|
|
1870
|
+
return_response: Annotated[
|
|
1871
|
+
bool,
|
|
1872
|
+
Field(
|
|
1873
|
+
description=(
|
|
1874
|
+
"If True, the service's response data is returned once, as "
|
|
1875
|
+
"the top-level 'service_response' key — never nested inside "
|
|
1876
|
+
"'result' (default: False). Must stay False when ws_command "
|
|
1877
|
+
"is set."
|
|
1878
|
+
),
|
|
1879
|
+
),
|
|
1880
|
+
] = False,
|
|
1881
|
+
wait: Annotated[
|
|
1882
|
+
bool,
|
|
1883
|
+
Field(
|
|
1884
|
+
description=(
|
|
1885
|
+
"If True (default), wait for the entity state to change "
|
|
1886
|
+
"before returning. Applies only to state-changing services "
|
|
1887
|
+
"called with a single entity_id. A comma-separated "
|
|
1888
|
+
"multi-target does not get confirmed by this: it falls "
|
|
1889
|
+
"through to a legacy path that polls for the literal "
|
|
1890
|
+
"composite entity_id and times out after 10s. Set "
|
|
1891
|
+
"wait=False for multi-target calls."
|
|
1892
|
+
),
|
|
1893
|
+
),
|
|
1894
|
+
] = True,
|
|
1833
1895
|
verbose: Annotated[
|
|
1834
1896
|
bool,
|
|
1835
1897
|
Field(
|
|
@@ -1911,8 +1973,6 @@ class ServiceTools:
|
|
|
1911
1973
|
```
|
|
1912
1974
|
|
|
1913
1975
|
**Key behavior:**
|
|
1914
|
-
- **wait** (default True): wait for the entity state to change before
|
|
1915
|
-
returning. Only applies to state-changing services on a single entity.
|
|
1916
1976
|
- **Result compaction (default ON)**: ``result`` is trimmed
|
|
1917
1977
|
to the targeted entity's record (drops parent-group propagation) and
|
|
1918
1978
|
stripped of ``context`` / ``last_*`` metadata and heavy attribute
|
|
@@ -1920,9 +1980,6 @@ class ServiceTools:
|
|
|
1920
1980
|
for the raw changed-state records, or ``result_fields`` /
|
|
1921
1981
|
``result_attribute_keys`` for explicit per-record projection (mirrors
|
|
1922
1982
|
``ha_get_state``).
|
|
1923
|
-
- **return_response** (default False): the service's response data is
|
|
1924
|
-
returned once, as the top-level ``service_response`` key — never nested
|
|
1925
|
-
inside ``result``, which carries the changed entity states.
|
|
1926
1983
|
|
|
1927
1984
|
**For detailed service documentation, use ha_get_skill_guide.**
|
|
1928
1985
|
|
|
@@ -1975,8 +2032,12 @@ class ServiceTools:
|
|
|
1975
2032
|
)
|
|
1976
2033
|
|
|
1977
2034
|
# Determine if we should wait for state change:
|
|
1978
|
-
# Only for state-changing services
|
|
2035
|
+
# Only for state-changing services with an entity_id set, not for
|
|
1979
2036
|
# trigger/reload/fire-and-forget services or services without entities.
|
|
2037
|
+
# A comma-separated multi-target entity_id is not excluded here — it
|
|
2038
|
+
# still falls through to the legacy path, which polls for the literal
|
|
2039
|
+
# composite entity_id and times out after 10s (see the wait Field
|
|
2040
|
+
# description and _maybe_component_call_service).
|
|
1980
2041
|
# This server-side decision (D6) also chooses whether to hand the
|
|
1981
2042
|
# component wait+entity_ids: a non-state-changing call passes wait
|
|
1982
2043
|
# implicitly false and no confirmation targets.
|
|
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.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/VENDORED
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/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.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/connection.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/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.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/frames.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/headers.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/http11.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/imports.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/legacy/auth.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/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.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/legacy/http.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/legacy/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/protocol.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/proxy.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/py.typed
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/streams.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/sync/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/sync/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/sync/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/sync/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/sync/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/sync/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/trio/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/trio/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/trio/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/trio/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/trio/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/trio/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/typing.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/_vendor/websockets/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/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.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/client/supervisor_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/client/websocket_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/dashboard_screenshot/content.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/dashboard_screenshot/paths.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/dashboard_screenshot/provision.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/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.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/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.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_handlers_advanced.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_handlers_backups.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_handlers_fs.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_handlers_server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_handlers_theme.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_handlers_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/_locale_policy.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/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.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/README.md
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/cs.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/de.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/en.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/eo.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/es.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/fr.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/it.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/ko.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/nl.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/pl.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/ru.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/sv.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/tlh.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.0.dev2509 → ha_mcp_dev-8.4.0.dev2510}/src/ha_mcp/settings_ui/locales/zh-Hans.json
RENAMED
|
File without changes
|