ha-mcp-dev 8.2.0.dev2318__tar.gz → 8.2.0.dev2321__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.2.0.dev2318/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.2.0.dev2321}/PKG-INFO +1 -1
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/pyproject.toml +1 -1
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/README.md +8 -3
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/en.json +2 -2
- ha_mcp_dev-8.2.0.dev2321/src/ha_mcp/settings_ui/locales/eo.json +26 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/settings.js +1 -1
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp_dev.egg-info/SOURCES.txt +1 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/LICENSE +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/MANIFEST.in +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/README.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/setup.cfg +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/tests/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/tests/test_constants.py +0 -0
- {ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/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.2.0.
|
|
7
|
+
version = "8.2.0.dev2321"
|
|
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
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/README.md
RENAMED
|
@@ -37,11 +37,16 @@ register the engine imitates, a component catalog left at a key or two rests
|
|
|
37
37
|
entirely on whichever of them addresses the reader —
|
|
38
38
|
`test_every_shipped_component_catalog_gets_reader_addressing_samples` pins that
|
|
39
39
|
one. Leaving that catalog empty is fine, but the moment you author anything in
|
|
40
|
-
it, at least
|
|
41
|
-
second person, and
|
|
40
|
+
it, at least two keys must be ones whose English addresses the reader in the
|
|
41
|
+
second person, and each must carry a non-empty translation — a key left blank is
|
|
42
42
|
skipped like a missing one rather than sampled empty. Most component strings do
|
|
43
43
|
not address the reader, so starting at the top of the file leaves the catalog
|
|
44
|
-
anchorless and that check red until you add
|
|
44
|
+
anchorless and that check red until you add ones that do. Two rather than one
|
|
45
|
+
because the run likeliest to need the register is the one that rewords such a
|
|
46
|
+
key: that queues it, and a queued key is dropped from the candidates, so a
|
|
47
|
+
surface resting on a single anchor loses its register in exactly that run —
|
|
48
|
+
`test_component_samples_survive_their_own_anchor_being_queued` pins the
|
|
49
|
+
survival. To fill them in your own PR instead, run
|
|
45
50
|
`scripts/translate_locales.py` yourself and review its output like any
|
|
46
51
|
other diff. Also add the new code to the locale list in the repository-root
|
|
47
52
|
`AGENTS.md`
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/en.json
RENAMED
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"features.enable_strict_mandatory_bps.label": "Strict best-practices mode",
|
|
129
129
|
"features.enable_strict_mandatory_bps.help": "Strict mode: prevents the client from using the tool until it can prove that it read the best practices. While on, the six best-practice write tools (automations, scripts, scenes, helpers, dashboards, raw YAML) are blocked and return an error directing the client to read the best-practices skill via ha_get_skill_guide and pass back the acknowledgment key it obtains there. While on, the ha_get_skill_guide tool is locked enabled — it is the only publisher of the acknowledgment key. Child of the \"Attach best-practice skills on writes\" option above and inert while that parent is off. Requires restart to take effect.",
|
|
130
130
|
"features.enable_beta_features.label": "Enable beta features (master)",
|
|
131
|
-
"features.enable_beta_features.help": "⚠ DANGER — these tools can PERMANENTLY DAMAGE your Home Assistant installation. They write to your YAML config, your filesystem, install custom components, run arbitrary sandboxed Python, and edit tool docstrings the AI sees. There is no warranty and no support guarantee — you enable them at your OWN RISK. Take a Home Assistant backup before turning this on, and never enable in production without one. Master gate for the
|
|
131
|
+
"features.enable_beta_features.help": "⚠ DANGER — these tools can PERMANENTLY DAMAGE your Home Assistant installation. They write to your YAML config, your filesystem, install custom components, run arbitrary sandboxed Python, and edit tool docstrings the AI sees. There is no warranty and no support guarantee — you enable them at your OWN RISK. Take a Home Assistant backup before turning this on, and never enable in production without one. Master gate for the experimental sub-flags below; sub-flags are ignored at runtime while this master is off, even when explicitly set to true. The same toggle is also surfaced in the web settings UI under \"Beta features (dangerous)\" — either surface reflects the other on restart.",
|
|
132
132
|
"features.enable_yaml_config_editing.label": "Enable YAML config editing (beta)",
|
|
133
133
|
"features.enable_yaml_config_editing.help": "Beta feature. Allows AI assistants to add, replace, or remove top-level keys in configuration.yaml and packages/*.yaml. Only whitelisted keys are allowed (e.g., template, sensor, command_line, mqtt, knx); core keys like homeassistant, http, and recorder are blocked. Each edit validates YAML syntax, runs a config check, and creates an automatic backup. Changes to most keys require a full HA restart to take effect. See docs/beta.md for known limitations. Dedicated tools (automations, scripts, scenes, helpers, template sensors) should be preferred when available. REQUIRES the master \"Enable beta features\" toggle above (and in the web UI) to be on — otherwise this sub-flag is ignored at runtime regardless of its value here.",
|
|
134
134
|
"features.enable_yaml_edit_confirm.label": "Require confirmation for YAML edits (diff preview)",
|
|
@@ -441,7 +441,7 @@
|
|
|
441
441
|
"addon.enable_security_policy_tool.name": "Let AI agents edit tool security policies",
|
|
442
442
|
"addon.enable_security_policy_tool.description": "Registers the ha_manage_security_policy tool, which lets connected AI agents read and rewrite the tool security policies — including removing approval gates. Off by default. Independent of the Tool Security Policies option above: this controls who can edit the rules, not whether they are enforced. The tool cannot see or decide pending approvals. To keep a human in the loop, gate the tool before enabling it: switch on \"security gated\" for Manage Security Policy in the Tools tab of the web UI. Requires restart to take effect.",
|
|
443
443
|
"addon.enable_auto_backup.name": "Enable auto-backup of edits",
|
|
444
|
-
"addon.enable_auto_backup.description": "Captures a per-entity snapshot before every wrapped write/destructive MCP tool call (automation, script, scene, helper, dashboard, label, category, group, zone, area, calendar, todo, entity, integration, and sibling remove/delete tools). Snapshots are saved as YAML files under /data/ha_mcp_backups/ (override via HAMCP_BACKUP_DIR) and listed, restored, or deleted via the Backups tab in the web settings UI or via ha_manage_backup(scope='edits', ...).
|
|
444
|
+
"addon.enable_auto_backup.description": "Captures a per-entity snapshot before every wrapped write/destructive MCP tool call (automation, script, scene, helper, dashboard, dashboard resource, label, category, group, zone, area, calendar, todo, entity, device, integration, and sibling remove/delete tools). The auto-backup throttle bounds how often that happens: 0 (default) captures on every such call, N>0 at most one snapshot per N minutes per entity. Snapshots are saved as YAML files under /data/ha_mcp_backups/ (override via HAMCP_BACKUP_DIR) and listed, restored, or deleted via the Backups tab in the web settings UI or via ha_manage_backup(scope='edits', ...). For those domains the capture is best-effort — a failure logs a WARNING and the write proceeds. The file and raw-YAML tools are the exception: ha_write_file, ha_delete_file and ha_config_set_yaml treat the snapshot as a precondition, so a write through them is refused while this is off, and a failed capture blocks it. On by default; unchecking opts out of the best-effort captures and takes the file and raw-YAML tools out of service with them. Requires restart to take effect.",
|
|
445
445
|
"addon.auto_backup_throttle_minutes.name": "Auto-backup throttle (minutes)",
|
|
446
446
|
"addon.auto_backup_throttle_minutes.description": "Per-entity throttle window. 0 (default) captures a snapshot on every wrapped write. N>0 captures at most one snapshot per N minutes per entity. Range 0–1440.",
|
|
447
447
|
"addon.auto_backup_retain_per_entity.name": "Auto-backup retention (per entity)",
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"native_name": "Esperanto",
|
|
4
|
+
"dir": "ltr"
|
|
5
|
+
},
|
|
6
|
+
"messages": {
|
|
7
|
+
"accessibility.storage_blocked": "Via retumilo blokas la konservadon de retejaj datumoj; viaj elektoj validas nur por ĉi tiu seanco.",
|
|
8
|
+
"actions.approve": "Aprobi",
|
|
9
|
+
"actions.deny": "Rifuzi",
|
|
10
|
+
"notice.restart.standalone": "⚠ Ŝanĝoj konservitaj. Restartigu la procezon ha-mcp, poste aktualigu la liston de MCP-iloj en via AI-kliento.",
|
|
11
|
+
"policies.operators.exists": "ekzistas",
|
|
12
|
+
"policies.operators.exists_long": "ekzistas (iu ajn valoro)",
|
|
13
|
+
"policies.operators.eq": "egalas",
|
|
14
|
+
"policies.operators.neq": "NE egalas",
|
|
15
|
+
"policies.operators.in": "estas unu el",
|
|
16
|
+
"policies.operators.not_in": "NE estas unu el",
|
|
17
|
+
"policies.operators.contains": "enhavas",
|
|
18
|
+
"policies.operators.regex": "kongruas kun regula esprimo",
|
|
19
|
+
"policies.operators.gt": "estas pli granda ol",
|
|
20
|
+
"policies.operators.lt": "estas pli malgranda ol",
|
|
21
|
+
"policies.pending.already_decided": "Ĉi tiu aprobo jam estis {decision}, eble de alia langeto aŭ seanco.",
|
|
22
|
+
"policies.pending.decision.approved": "aprobita",
|
|
23
|
+
"policies.pending.decision.denied": "rifuzita",
|
|
24
|
+
"visibility.errors.conflict": "La agordo estis ŝanĝita en alia langeto aŭ seanco. Reŝargu la paĝon, poste reapliku viajn ŝanĝojn."
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -1936,7 +1936,7 @@ const FEATURE_META = {
|
|
|
1936
1936
|
},
|
|
1937
1937
|
enable_beta_features: {
|
|
1938
1938
|
label: "Enable beta features (master)",
|
|
1939
|
-
help: "⚠ DANGER — these tools can PERMANENTLY DAMAGE your Home Assistant installation. They write to your YAML config, your filesystem, install custom components, run arbitrary sandboxed Python, and edit tool docstrings the AI sees. There is no warranty and no support guarantee — you enable them at your OWN RISK. Take a Home Assistant backup before turning this on, and never enable in production without one. Master gate for the
|
|
1939
|
+
help: "⚠ DANGER — these tools can PERMANENTLY DAMAGE your Home Assistant installation. They write to your YAML config, your filesystem, install custom components, run arbitrary sandboxed Python, and edit tool docstrings the AI sees. There is no warranty and no support guarantee — you enable them at your OWN RISK. Take a Home Assistant backup before turning this on, and never enable in production without one. Master gate for the experimental sub-flags below; sub-flags are ignored at runtime while this master is off, even when explicitly set to true. The same toggle is also surfaced in the web settings UI under \"Beta features (dangerous)\" — either surface reflects the other on restart.",
|
|
1940
1940
|
},
|
|
1941
1941
|
enable_yaml_config_editing: {
|
|
1942
1942
|
label: "Enable YAML config editing (beta)",
|
|
@@ -147,6 +147,7 @@ src/ha_mcp/settings_ui/settings.js
|
|
|
147
147
|
src/ha_mcp/settings_ui/locales/README.md
|
|
148
148
|
src/ha_mcp/settings_ui/locales/de.json
|
|
149
149
|
src/ha_mcp/settings_ui/locales/en.json
|
|
150
|
+
src/ha_mcp/settings_ui/locales/eo.json
|
|
150
151
|
src/ha_mcp/settings_ui/locales/es.json
|
|
151
152
|
src/ha_mcp/settings_ui/locales/fr.json
|
|
152
153
|
src/ha_mcp/settings_ui/locales/it.json
|
|
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.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/VENDORED
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/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.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/connection.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/frames.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/headers.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/http11.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/imports.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/legacy/auth.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/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.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/legacy/http.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/legacy/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/protocol.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/proxy.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/py.typed
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/streams.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/sync/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/sync/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/sync/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/sync/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/sync/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/sync/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/trio/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/trio/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/trio/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/trio/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/trio/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/trio/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/typing.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/_vendor/websockets/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/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.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/client/supervisor_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/client/websocket_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/dashboard_screenshot/content.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/dashboard_screenshot/paths.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/dashboard_screenshot/provision.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/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
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/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
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_handlers_advanced.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_handlers_backups.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_handlers_fs.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_handlers_server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_handlers_theme.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_handlers_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/_persistence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/de.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/es.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/fr.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/it.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/nl.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/pl.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/ru.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/sv.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/settings_ui/locales/zh-Hans.json
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.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/best_practice_checker.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/best_practice_result.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/best_practice_variables.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/component_config_reads.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/component_registries.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/component_registry_lookup.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/config_entry_flow_form.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/config_entry_flow_menu.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2318 → ha_mcp_dev-8.2.0.dev2321}/src/ha_mcp/tools/config_entry_flow_walker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|