ha-mcp-dev 8.1.1.dev2277__tar.gz → 8.1.1.dev2280__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.1.1.dev2277/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.1.1.dev2280}/PKG-INFO +1 -1
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/pyproject.toml +1 -1
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/locales/de.json +15 -1
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/locales/es.json +15 -1
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/locales/fr.json +15 -1
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/locales/it.json +15 -1
- ha_mcp_dev-8.1.1.dev2280/src/ha_mcp/settings_ui/locales/nl.json +846 -0
- ha_mcp_dev-8.1.1.dev2280/src/ha_mcp/settings_ui/locales/pl.json +22 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/locales/ru.json +15 -1
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/locales/zh-Hans.json +15 -1
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp_dev.egg-info/SOURCES.txt +1 -0
- ha_mcp_dev-8.1.1.dev2277/src/ha_mcp/settings_ui/locales/nl.json +0 -22
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/LICENSE +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/MANIFEST.in +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/README.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/setup.cfg +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/tests/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/tests/test_constants.py +0 -0
- {ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/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.1.1.
|
|
7
|
+
version = "8.1.1.dev2280"
|
|
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.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/locales/de.json
RENAMED
|
@@ -52,8 +52,12 @@
|
|
|
52
52
|
"policies.title": "Tool-Sicherheitsrichtlinien",
|
|
53
53
|
"policies.intro": "Genehmigungs-Gating pro Tool für kritische Aufrufe. Verwende den Tab <strong>Tools</strong>, um das Gating für ein Tool zu aktivieren, und verfeinere dann die Abgleichbedingungen und die Genehmigungs-Lebensdauer hier. Bedingungsoperatoren: gleich, ist eins von, regex, enthält, ist vorhanden, größer als, kleiner als.",
|
|
54
54
|
"policies.global.title": "Globale Einstellungen",
|
|
55
|
+
"policies.global.unknown": "Servereinstellungen konnten nicht gelesen werden. Die beiden Schalter unten werden als unbekannt angezeigt und können erst geändert werden, wenn die Seite erfolgreich neu geladen wurde; diese Ansicht spiegelt möglicherweise nicht wider, was der Server erzwingt.",
|
|
55
56
|
"policies.global.enabled.label": "Tool-Sicherheitsrichtlinien aktivieren",
|
|
56
57
|
"policies.global.enabled.help": "Hauptschalter. Spiegelt den Schalter in den Server-Einstellungen. Standardmäßig ausgeschaltet. Schalte ihn ein und starte das Add-on neu, um die Gating-Middleware zu aktivieren. Während er ausgeschaltet ist, bleiben die nachfolgenden Regeln erhalten, werden aber nicht durchgesetzt.",
|
|
58
|
+
"policies.global.manage_tool.label": "KI-Agenten erlauben, diese Richtlinien zu bearbeiten (ha_manage_security_policy)",
|
|
59
|
+
"policies.global.manage_tool.help": "Registriert das Tool ha_manage_security_policy, das das Richtliniendokument liest und ersetzt, das dieser Tab bearbeitet. Standardmäßig deaktiviert. Unabhängig vom Hauptschalter oben: Dies steuert, wer die Regeln bearbeiten kann, nicht ob sie erzwungen werden. Das Tool legt keine Operationen der Warteschlange für ausstehende Genehmigungen offen, aber eine durch Richtlinien geschützte Set-Aktion kann weiterhin eine Genehmigung erfordern.",
|
|
60
|
+
"policies.global.manage_tool.warning": "⚠ Das Aktivieren dieser Option erlaubt verbundenen KI-Agenten, die Sicherheitsrichtlinien auf diesem Tab neu zu schreiben, einschließlich des Entfernens von Genehmigungsschranken. Um einen Menschen in der Schleife zu halten, schütze das Tool, BEVOR du es aktivierst: Aktiviere auf dem Tab „Tools“ die Option „security gated“ für „Manage Security Policy“. Diese Regel kann erstellt werden, während das Tool noch deaktiviert ist, und sie wird erzwungen, sobald der Hauptschalter oben aktiviert ist und der Server neu gestartet wurde. Starte die App (Add-on) neu, nachdem du einen der Schalter umgelegt hast.",
|
|
57
61
|
"policies.global.wait.label": "Wartezeit in Sekunden (5-600)",
|
|
58
62
|
"policies.global.wait.help": "Wie lange die Middleware auf eine Genehmigung wartet, bevor sie eine Zeitüberschreitung aufweist.",
|
|
59
63
|
"policies.global.ttl.label": "Genehmigungs-TTL in Minuten (1-60)",
|
|
@@ -117,6 +121,8 @@
|
|
|
117
121
|
"features.enable_tool_security_policies.help": "Gating kritischer Tool-Aufrufe (Schloss-/Alarmsteuerung, Automatisierungsschreibvorgänge usw.) hinter Benutzergenehmigung. Wenn ein geschütztes Tool aufgerufen wird, weist der Agent den Benutzer an, den Tab Tool-Sicherheitsrichtlinien in der Web-UI zu öffnen und auf Genehmigen zu klicken, bevor der Aufruf fortgesetzt wird. Tool-bezogene Regeln mit optionalen Argumentbedingungen werden im Tab Tool-Sicherheitsrichtlinien konfiguriert. Standardmäßig ausgeschaltet. Erfordert Neustart, um wirksam zu werden.",
|
|
118
122
|
"features.read_only_mode.label": "Nur-Lese-Modus",
|
|
119
123
|
"features.read_only_mode.help": "Schaltet alle Schreibtools aus und nimmt Tools die Möglichkeit, Schreib- oder destruktive Aufrufe zu tätigen. Gemischte Lese-/Schreib-Tools (Backups, Add-ons, Energiepräferenzen, Voice-Pipelines und Code-Modus, wenn aktiviert) bleiben verfügbar, wobei ihre Schreiboperationen blockiert sind. Derselbe Schalter wie im Web-UI-Tab Tools. Standardmäßig ausgeschaltet. Erfordert Neustart, um wirksam zu werden.",
|
|
124
|
+
"features.redact_secrets.label": "Geheimnisse schwärzen",
|
|
125
|
+
"features.redact_secrets.help": "Schwärzt Geheimnisse aus Tool-Antworten, bevor sie den KI-Assistenten erreichen. Add-on-Optionen und Integrationsfelder, die als Passwörter markiert sind, werden durch einen gesetzt/leer-Marker ersetzt (damit „ist dieses Anmeldeinformationen konfiguriert?“ weiterhin beantwortbar bleibt), und andere Tool-Antworten werden von geheimen Werten bereinigt, die der Server bereits gesehen hat (Werte, die kürzer als 6 Zeichen sind, werden übersprungen, da das Ersetzen kleiner Fragmente zu einer Beschädigung der nicht zusammenhängenden Ausgabe führen würde). Felder, die nicht durch ihr Schema als Passwörter markiert sind, können nicht erkannt werden. Standardmäßig deaktiviert.",
|
|
120
126
|
"features.enable_mandatory_bps.label": "Best-Practice-Skills bei Schreibvorgängen anhängen",
|
|
121
127
|
"features.enable_mandatory_bps.help": "Hauptschalter für die Funktion zur Bereitstellung von Schreib-Tool-Skill-Inhalten (Issue #1182). Wenn aktiviert (Standard), fügen die sechs Konfigurations-Schreibtools (Automatisierungen, Skripte, Szenen, Helfer, Dashboards, rohes YAML) die kanonischen Home-Assistant-Best-Practice-Referenzdateien unter skill_content bei jedem erfolgreichen Schreibvorgang an, plus automatisches Einbetten aller Referenzabschnitte, die von Best-Practice-Warnungen zitiert werden. Jedes Tool stellt auch einen per-Aufruf-Parameter MandatoryBPS zur Verfügung, den der Agent bei nachfolgenden Aufrufen auf false setzen kann, sobald er den Inhalt hat. Wenn dieser Hauptschalter ausgeschaltet ist, wird KEIN skill_content ausgegeben, unabhängig vom per-Aufruf-Parameter oder BP-Warnungen. Empfohlen EIN als erste Wahl; deaktiviere nur für Modelle mit sehr kleinen Kontextfenstern. Das Ausschalten davon kann die Schreibgenauigkeit beeinträchtigen. Erfordert Neustart, um wirksam zu werden.",
|
|
122
128
|
"features.enable_strict_mandatory_bps.label": "Strikter Best-Practices-Modus",
|
|
@@ -205,6 +211,7 @@
|
|
|
205
211
|
"tools.badges.read_only": "schreibgeschützt",
|
|
206
212
|
"tools.badges.writes": "schreibt",
|
|
207
213
|
"tools.badges.deletes": "löscht",
|
|
214
|
+
"tools.notes.gated_disabled": "Deaktiviert. Aktiviere {setting} — der Schalter des Richtlinienbearbeitungstools befindet sich auf dem Tab „Tool-Sicherheitsrichtlinien“ — starte dann die App (Add-on) neu.",
|
|
208
215
|
"tools.notes.beta_disabled": "Beta. Setze {setting} in der Dev-Add-on-Konfiguration oder passender Umgebungsvariable (siehe docs/beta.md).",
|
|
209
216
|
"tools.notes.env_pinned": "Angeheftet durch {variable}. Hebe die Umgebungsvariable auf, um hier zu bearbeiten.",
|
|
210
217
|
"tools.notes.bps_locked": "Gesperrt, während der strikte Best-Practices-Modus eingeschaltet ist. Schalte diese Einstellung zuerst aus, um dieses Tool zu deaktivieren.",
|
|
@@ -300,6 +307,7 @@
|
|
|
300
307
|
"policies.errors.update_tool": "Tool-Sicherheitsrichtlinie konnte nicht aktualisiert werden: {message}",
|
|
301
308
|
"policies.errors.remove_rule": "Regel konnte nicht entfernt werden: {message}",
|
|
302
309
|
"policies.errors.master_save": "Tool-Sicherheitsrichtlinien-Änderung wurde nicht gespeichert. Der Server hat weiterhin den vorherigen Wert.",
|
|
310
|
+
"policies.errors.manage_tool_save": "Änderung des Richtlinienbearbeitungstools wurde nicht gespeichert. Der Server hat immer noch den vorherigen Wert.",
|
|
303
311
|
"policies.operations.sync_gated": "Gegated-Toggle synchronisieren",
|
|
304
312
|
"policies.operations.save_rule": "Regel speichern",
|
|
305
313
|
"policies.operations.save_global": "Globale Einstellungen speichern",
|
|
@@ -430,6 +438,8 @@
|
|
|
430
438
|
"addon.backup_hint.description": "Passt die Formulierung des Hinweises an, den das LLM in der\n`ha_manage_backup(scope='snapshot')`-Tool-Beschreibung sieht, wann es ein\nvollständiges Home Assistant Tarball-Backup vor riskanten Operationen\nvorschlagen soll (z.B. Massen-Gerätelöschungen). Betrifft NUR diesen einen\nLLM-seitigen Prompt-Satz.\n\nFür automatische Snapshots pro Bearbeitung von Automatisierungen / Skripten /\nHelfern / etc. nutze den separaten **Auto-Backup von Bearbeitungen aktivieren**-Schalter\nunten.",
|
|
431
439
|
"addon.secret_path.name": "Secret-Pfad Override",
|
|
432
440
|
"addon.secret_path.description": "Optionaler benutzerdefinierter HTTP-Pfad für den MCP-Server. Leer lassen, um den automatisch generierten sicheren Pfad zu verwenden.\n",
|
|
441
|
+
"addon.enable_security_policy_tool.name": "KI-Agenten erlauben, Tool-Sicherheitsrichtlinien zu bearbeiten",
|
|
442
|
+
"addon.enable_security_policy_tool.description": "Registriert das Tool ha_manage_security_policy, das verbundenen KI-Agenten erlaubt, die Tool-Sicherheitsrichtlinien zu lesen und neu zu schreiben — einschließlich des Entfernens von Genehmigungsschranken. Standardmäßig deaktiviert. Unabhängig von der Option „Tool-Sicherheitsrichtlinien“ oben: Dies steuert, wer die Regeln bearbeiten kann, nicht ob sie erzwungen werden. Das Tool kann ausstehende Genehmigungen nicht sehen oder entscheiden. Um einen Menschen in der Schleife zu halten, schütze das Tool, bevor du es aktivierst: Aktiviere „security gated“ für „Manage Security Policy“ auf dem Tab „Tools“ der Web-UI. Erfordert einen Neustart, um wirksam zu werden.",
|
|
433
443
|
"addon.enable_auto_backup.name": "Auto-Backup von Bearbeitungen aktivieren",
|
|
434
444
|
"addon.enable_auto_backup.description": "Erfasst einen Pro-Entität-Snapshot vor jedem umschlossenen Schreib/destruktiven MCP-Tool-Aufruf (Automatisierung, Skript, Szene, Helfer, Dashboard, Label, Kategorie, Gruppe, Zone, Bereich, Kalender, Todo, Entität, Integration und verwandte Remove/Delete-Tools). Snapshots werden als YAML-Dateien unter /data/ha_mcp_backups/ gespeichert (Override via HAMCP_BACKUP_DIR) und über den Backups-Tab im Web-Settings-UI oder via ha_manage_backup(scope='edits', ...) aufgelistet, wiederhergestellt oder gelöscht. Best-Effort – Fehler loggen ein WARNING, blockieren aber nie den zugrunde liegenden Schreibvorgang. Standardmäßig an; Häkchen entfernen, um auszusteigen. Erfordert Neustart, um wirksam zu werden.",
|
|
435
445
|
"addon.auto_backup_throttle_minutes.name": "Auto-Backup-Drosselung (Minuten)",
|
|
@@ -738,7 +748,7 @@
|
|
|
738
748
|
},
|
|
739
749
|
"ha_manage_hacs": {
|
|
740
750
|
"title": "HACS verwalten",
|
|
741
|
-
"description": "
|
|
751
|
+
"description": "HACS (Home Assistant Community Store) verwalten — installieren/aktualisieren, entfernen, benutzerdefinierte Repositories hinzufügen oder Repository aktualisieren in"
|
|
742
752
|
},
|
|
743
753
|
"ha_manage_pipeline": {
|
|
744
754
|
"title": "Assist-Pipeline verwalten",
|
|
@@ -748,6 +758,10 @@
|
|
|
748
758
|
"title": "Funknetzwerke verwalten",
|
|
749
759
|
"description": "Verwaltet Z-Wave-, Zigbee-, Matter- und Thread-Netzwerke in Home Assistant."
|
|
750
760
|
},
|
|
761
|
+
"ha_manage_security_policy": {
|
|
762
|
+
"title": "Sicherheitsrichtlinie verwalten",
|
|
763
|
+
"description": "Die Tool-Sicherheitsrichtlinie lesen und neu schreiben, die risikoreiche Tool-Aufrufe hinter Benutzergenehmigung schützt."
|
|
764
|
+
},
|
|
751
765
|
"ha_manage_theme": {
|
|
752
766
|
"title": "Themes verwalten",
|
|
753
767
|
"description": "Verwaltet Home-Assistant-Oberflächen-Themes."
|
{ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/locales/es.json
RENAMED
|
@@ -52,8 +52,12 @@
|
|
|
52
52
|
"policies.title": "Políticas de seguridad de herramientas",
|
|
53
53
|
"policies.intro": "Control de aprobación por herramienta para llamadas de alto riesgo. Usa la pestaña <strong>Herramientas</strong> para activar el control de una herramienta y afina aquí las condiciones de coincidencia y la duración de la aprobación. Operadores de condición: es igual a, es uno de, regex, contiene, está presente, mayor que, menor que.",
|
|
54
54
|
"policies.global.title": "Ajustes globales",
|
|
55
|
+
"policies.global.unknown": "No se pudieron leer los ajustes del servidor. Los dos interruptores de abajo se muestran como desconocidos y no se pueden cambiar hasta que la página se recargue correctamente; esta vista puede no reflejar lo que el servidor aplica.",
|
|
55
56
|
"policies.global.enabled.label": "Activar las políticas de seguridad de herramientas",
|
|
56
57
|
"policies.global.enabled.help": "Interruptor principal. Refleja la opción de Ajustes del servidor. Desactivado de forma predeterminada. Actívalo y reinicia la app (complemento) para activar el middleware de control. Mientras esté desactivado, las reglas de abajo se conservan pero no se aplican.",
|
|
58
|
+
"policies.global.manage_tool.label": "Permitir que los agentes de IA editen estas políticas (ha_manage_security_policy)",
|
|
59
|
+
"policies.global.manage_tool.help": "Registra la herramienta ha_manage_security_policy, que lee y reemplaza el documento de política que edita esta pestaña. Desactivado por defecto. Independiente del interruptor maestro de arriba: esto controla quién puede editar las reglas, no si se aplican. La herramienta no expone operaciones de cola de aprobación pendientes, pero una acción de conjunto protegida por política aún puede requerir aprobación.",
|
|
60
|
+
"policies.global.manage_tool.warning": "Habilitar esto permite a los agentes de IA conectados reescribir las políticas de seguridad en esta pestaña, incluyendo la eliminación de las puertas de aprobación. Para mantener a un humano en el bucle, protege la herramienta ANTES de habilitarla: en la pestaña Herramientas, activa \"security gated\" para Manage Security Policy. Esa regla puede ser creada mientras la herramienta aún está desactivada, y se aplica una vez que el interruptor maestro de arriba está activado y el servidor se ha reiniciado. Reinicia la App (complemento) después de alternar cualquiera de los interruptores.",
|
|
57
61
|
"policies.global.wait.label": "Segundos de espera (5-600)",
|
|
58
62
|
"policies.global.wait.help": "Cuánto espera el middleware una aprobación antes de agotar el tiempo.",
|
|
59
63
|
"policies.global.ttl.label": "TTL de la aprobación en minutos (1-60)",
|
|
@@ -117,6 +121,8 @@
|
|
|
117
121
|
"features.enable_tool_security_policies.help": "Somete a aprobación del usuario las llamadas a herramientas de alto riesgo (control de cerraduras y alarmas, escritura de automatizaciones, etc.). Cuando se llama a una herramienta protegida, el agente indica al usuario que abra la pestaña Políticas de seguridad de herramientas en la interfaz web y pulse Aprobar antes de que la llamada continúe. Las reglas por herramienta, con condiciones opcionales sobre los argumentos, se configuran en esa misma pestaña. Desactivado de forma predeterminada. Requiere reiniciar para que surta efecto.",
|
|
118
122
|
"features.read_only_mode.label": "Modo de solo lectura",
|
|
119
123
|
"features.read_only_mode.help": "Desactiva todas las herramientas de escritura y les retira la capacidad de hacer llamadas de escritura o destructivas. Las herramientas mixtas de lectura/escritura (copias de seguridad, complementos, preferencias de energía, canalizaciones de voz y el modo de código cuando está activado) siguen disponibles, pero con sus operaciones de escritura bloqueadas. Es la misma opción que la de la pestaña Herramientas de la interfaz web. Desactivado de forma predeterminada. Requiere reiniciar para que surta efecto.",
|
|
124
|
+
"features.redact_secrets.label": "Redactar secretos",
|
|
125
|
+
"features.redact_secrets.help": "Redacta secretos de las respuestas de las herramientas antes de que lleguen al asistente de IA. Las opciones del complemento y los campos de integración marcados como contraseñas se reemplazan con un marcador de establecido/vacío (para que \"¿está configurada esta credencial?\" siga siendo respondible), y otras respuestas de herramientas se limpian de valores secretos que el servidor ya ha visto (los valores de menos de 6 caracteres se omiten, ya que reemplazar fragmentos pequeños corrompería la salida no relacionada). Los campos no marcados como contraseñas por su esquema no pueden ser detectados. Desactivado por defecto.",
|
|
120
126
|
"features.enable_mandatory_bps.label": "Adjuntar skills de buenas prácticas en las escrituras",
|
|
121
127
|
"features.enable_mandatory_bps.help": "Interruptor principal de la entrega de contenido de skills en las herramientas de escritura (issue #1182). Cuando está activado (predeterminado), las seis herramientas de escritura de configuración (automatizaciones, scripts, escenas, auxiliares, paneles, YAML en bruto) adjuntan los archivos de referencia canónicos de buenas prácticas de Home Assistant en `skill_content` tras cada escritura correcta, y además incrustan automáticamente las secciones de referencia citadas por los avisos de buenas prácticas. Cada herramienta expone también un parámetro `MandatoryBPS` por llamada que el agente puede poner a false en llamadas posteriores una vez que tiene el contenido. Con este interruptor principal desactivado NO se envía ningún skill_content, independientemente del parámetro por llamada o de los avisos de buenas prácticas. Se recomienda dejarlo activado; desactívalo solo para modelos con ventanas de contexto muy pequeñas. Desactivarlo puede degradar la precisión de las escrituras. Requiere reiniciar para que surta efecto.",
|
|
122
128
|
"features.enable_strict_mandatory_bps.label": "Modo estricto de buenas prácticas",
|
|
@@ -205,6 +211,7 @@
|
|
|
205
211
|
"tools.badges.read_only": "solo lectura",
|
|
206
212
|
"tools.badges.writes": "escribe",
|
|
207
213
|
"tools.badges.deletes": "elimina",
|
|
214
|
+
"tools.notes.gated_disabled": "Desactivado. Activa {setting} — el interruptor de la herramienta de edición de políticas está en la pestaña Políticas de seguridad de la herramienta — luego reinicia la App (complemento).",
|
|
208
215
|
"tools.notes.beta_disabled": "Beta. Configura {setting} en la configuración de la app (complemento) de desarrollo o la variable de entorno equivalente (consulta docs/beta.md).",
|
|
209
216
|
"tools.notes.env_pinned": "Fijada por {variable}. Quita la variable de entorno para editarla aquí.",
|
|
210
217
|
"tools.notes.bps_locked": "Bloqueada mientras el modo estricto de buenas prácticas esté activado. Desactiva antes ese ajuste para poder desactivar esta herramienta.",
|
|
@@ -300,6 +307,7 @@
|
|
|
300
307
|
"policies.errors.update_tool": "Fallo al actualizar la política de seguridad de la herramienta: {message}",
|
|
301
308
|
"policies.errors.remove_rule": "Fallo al quitar la regla: {message}",
|
|
302
309
|
"policies.errors.master_save": "El cambio de las políticas de seguridad de herramientas no se ha guardado. El servidor mantiene el valor anterior.",
|
|
310
|
+
"policies.errors.manage_tool_save": "El cambio de la herramienta de edición de políticas no se guardó. El servidor aún tiene el valor anterior.",
|
|
303
311
|
"policies.operations.sync_gated": "Sincronizar la opción de control",
|
|
304
312
|
"policies.operations.save_rule": "Guardar la regla",
|
|
305
313
|
"policies.operations.save_global": "Guardar los ajustes globales",
|
|
@@ -430,6 +438,8 @@
|
|
|
430
438
|
"addon.backup_hint.description": "Ajusta la redacción de la indicación que el LLM ve en la descripción de la\nherramienta `ha_manage_backup(scope='snapshot')` sobre cuándo sugerir una\ncopia de seguridad completa de Home Assistant antes de operaciones\narriesgadas (p. ej. borrados masivos de dispositivos). Afecta ÚNICAMENTE a\nesa frase dirigida al LLM.\n\nPara instantáneas automáticas por edición de automatizaciones / scripts /\nauxiliares / etc., usa la opción independiente **Activar copia de\nseguridad automática de las ediciones** que aparece más abajo.",
|
|
431
439
|
"addon.secret_path.name": "Ruta secreta personalizada",
|
|
432
440
|
"addon.secret_path.description": "Ruta HTTP personalizada opcional para el servidor MCP. Déjala vacía para usar la ruta segura generada automáticamente.\n",
|
|
441
|
+
"addon.enable_security_policy_tool.name": "Permitir que los agentes de IA editen las políticas de seguridad de la herramienta",
|
|
442
|
+
"addon.enable_security_policy_tool.description": "Registra la herramienta ha_manage_security_policy, que permite a los agentes de IA conectados leer y reescribir las políticas de seguridad de la herramienta — incluyendo la eliminación de las puertas de aprobación. Desactivado por defecto. Independiente de la opción Políticas de seguridad de la herramienta de arriba: esto controla quién puede editar las reglas, no si se aplican. La herramienta no puede ver ni decidir aprobaciones pendientes. Para mantener a un humano en el bucle, protege la herramienta antes de habilitarla: activa \"security gated\" para Manage Security Policy en la pestaña Herramientas de la interfaz de usuario web. Requiere un reinicio para que surta efecto.",
|
|
433
443
|
"addon.enable_auto_backup.name": "Activar copia de seguridad automática de las ediciones",
|
|
434
444
|
"addon.enable_auto_backup.description": "Captura una instantánea por entidad antes de cada llamada a una herramienta MCP de escritura o destructiva cubierta (automatización, script, escena, auxiliar, panel, etiqueta, categoría, grupo, zona, área, calendario, tareas pendientes, entidad, integración y las herramientas hermanas de eliminación). Las instantáneas se guardan como archivos YAML en /data/ha_mcp_backups/ (se puede cambiar con HAMCP_BACKUP_DIR) y se listan, restauran o eliminan desde la pestaña Copias de seguridad de la interfaz web de ajustes o mediante ha_manage_backup(scope='edits', ...). Funciona en la medida de lo posible: los fallos registran un WARNING pero nunca bloquean la escritura subyacente. Activado de forma predeterminada; desmárcalo para excluirte. Requiere reiniciar para que surta efecto.",
|
|
435
445
|
"addon.auto_backup_throttle_minutes.name": "Limitación de la copia automática (minutos)",
|
|
@@ -738,7 +748,7 @@
|
|
|
738
748
|
},
|
|
739
749
|
"ha_manage_hacs": {
|
|
740
750
|
"title": "Gestionar HACS",
|
|
741
|
-
"description": "Gestionar HACS (Home Assistant Community Store) — instalar/actualizar, eliminar
|
|
751
|
+
"description": "Gestionar HACS (Home Assistant Community Store) — instalar/actualizar, eliminar, añadir repositorios personalizados o actualizar repositorio en"
|
|
742
752
|
},
|
|
743
753
|
"ha_manage_pipeline": {
|
|
744
754
|
"title": "Gestionar canalización de Assist",
|
|
@@ -748,6 +758,10 @@
|
|
|
748
758
|
"title": "Gestionar radios (Z-Wave / Zigbee / Matter / Thread)",
|
|
749
759
|
"description": "Gestiona las radios de Home Assistant: Z-Wave, Zigbee, Matter y Thread."
|
|
750
760
|
},
|
|
761
|
+
"ha_manage_security_policy": {
|
|
762
|
+
"title": "Gestionar política de seguridad",
|
|
763
|
+
"description": "Leer y reescribir la política de seguridad de la herramienta que protege las llamadas a herramientas de alto riesgo detrás de la aprobación del usuario."
|
|
764
|
+
},
|
|
751
765
|
"ha_manage_theme": {
|
|
752
766
|
"title": "Gestionar temas de la interfaz",
|
|
753
767
|
"description": "Gestiona los temas de la interfaz de Home Assistant."
|
{ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/locales/fr.json
RENAMED
|
@@ -52,8 +52,12 @@
|
|
|
52
52
|
"policies.title": "Politiques de sécurité des outils",
|
|
53
53
|
"policies.intro": "Contrôle d'approbation par outil pour les appels à enjeux élevés. Utilisez l'onglet <strong>Outils</strong> pour activer le contrôle pour un outil, puis affinez les conditions de correspondance et la durée de validité de l'approbation ici. Opérateurs de condition : égal à, fait partie de, regex, contient, est présent, supérieur à, inférieur à.",
|
|
54
54
|
"policies.global.title": "Paramètres globaux",
|
|
55
|
+
"policies.global.unknown": "Impossible de lire les paramètres du serveur. Les deux interrupteurs ci-dessous sont affichés comme inconnus et ne peuvent pas être modifiés tant que la page n'est pas rechargée avec succès ; cette vue peut ne pas refléter ce que le serveur applique.",
|
|
55
56
|
"policies.global.enabled.label": "Activer les politiques de sécurité des outils",
|
|
56
57
|
"policies.global.enabled.help": "Interrupteur principal. Reflète le bouton dans les paramètres du serveur. Désactivé par défaut. Activez-le et redémarrez l'App (add-on) pour activer le middleware de contrôle. Lorsqu'il est désactivé, les règles ci-dessous persistent mais ne sont pas appliquées.",
|
|
58
|
+
"policies.global.manage_tool.label": "Permettre aux agents IA de modifier ces politiques (ha_manage_security_policy)",
|
|
59
|
+
"policies.global.manage_tool.help": "Enregistre l'outil ha_manage_security_policy, qui lit et remplace le document de politique que cet onglet modifie. Désactivé par défaut. Indépendant de l'interrupteur principal ci-dessus : ceci contrôle qui peut modifier les règles, et non si elles sont appliquées. L'outil n'expose pas les opérations de file d'attente d'approbation en attente, mais une action de définition soumise à une politique peut toujours nécessiter une approbation.",
|
|
60
|
+
"policies.global.manage_tool.warning": "⚠ L'activation de cette option permet aux agents IA connectés de réécrire les politiques de sécurité de cet onglet, y compris la suppression des portes d'approbation. Pour garder un humain dans la boucle, soumettez l'outil à une approbation AVANT de l'activer : dans l'onglet Outils, activez « soumis à la sécurité » pour Gérer la politique de sécurité. Cette règle peut être rédigée tant que l'outil est désactivé, et elle s'applique une fois que l'interrupteur principal ci-dessus est activé et que le serveur a redémarré. Redémarrez l'application (add-on) après avoir basculé l'un ou l'autre interrupteur.",
|
|
57
61
|
"policies.global.wait.label": "Secondes d'attente (5-600)",
|
|
58
62
|
"policies.global.wait.help": "Durée pendant laquelle le middleware attend une approbation avant d'expirer.",
|
|
59
63
|
"policies.global.ttl.label": "Durée de vie de l'approbation en minutes (1-60)",
|
|
@@ -117,6 +121,8 @@
|
|
|
117
121
|
"features.enable_tool_security_policies.help": "Contrôle les appels d'outils à enjeux élevés (contrôle des serrures/alarmes, écritures d'automatisations, etc.) derrière une approbation utilisateur. Lorsqu'un outil protégé est appelé, l'agent dit à l'utilisateur d'ouvrir l'onglet Politiques de sécurité des outils dans l'interface Web et de cliquer sur Approuver avant que l'appel ne continue. Les règles par outil avec conditions d'argument optionnelles sont configurées dans l'onglet Politiques de sécurité des outils. Désactivé par défaut. Nécessite un redémarrage pour prendre effet.",
|
|
118
122
|
"features.read_only_mode.label": "Mode lecture seule",
|
|
119
123
|
"features.read_only_mode.help": "Désactive tous les outils d'écriture et supprime la capacité des outils à effectuer des appels d'écriture ou destructeurs. Les outils mixtes lecture/écriture (sauvegardes, add-ons, préférences énergétiques, pipelines vocaux et mode code lorsqu'il est activé) restent disponibles avec leurs opérations d'écriture bloquées. Même bouton que l'onglet Outils de l'interface Web. Désactivé par défaut. Nécessite un redémarrage pour prendre effet.",
|
|
124
|
+
"features.redact_secrets.label": "Masquer les secrets",
|
|
125
|
+
"features.redact_secrets.help": "Masque les secrets des réponses des outils avant qu'ils n'atteignent l'assistant IA. Les options d'add-on et les champs d'intégration marqués comme mots de passe sont remplacés par un marqueur défini/vide (afin que la question « cette information d'identification est-elle configurée ? » reste répondable), et les autres réponses des outils sont nettoyées des valeurs secrètes que le serveur a déjà vues (les valeurs de moins de 6 caractères sont ignorées, car le remplacement de petits fragments corromprait la sortie non liée). Les champs non marqués comme mots de passe par leur schéma ne peuvent pas être détectés. Désactivé par défaut.",
|
|
120
126
|
"features.enable_mandatory_bps.label": "Attacher les compétences de bonnes pratiques aux écritures",
|
|
121
127
|
"features.enable_mandatory_bps.help": "Interrupteur principal pour la fonction de livraison de contenu de compétences d'outils d'écriture (problème #1182). Lorsqu'il est activé (par défaut), les six outils d'écriture de configuration (automatisations, scripts, scènes, assistants, tableaux de bord, YAML brut) attachent les fichiers de référence canoniques des bonnes pratiques Home Assistant sous `skill_content` à chaque écriture réussie, plus l'intégration automatique de toutes les sections de référence citées par les avertissements de bonnes pratiques. Chaque outil expose également un paramètre `MandatoryBPS` par appel que l'agent peut définir sur false lors des appels suivants une fois qu'il a le contenu. Lorsque cet interrupteur principal est désactivé, AUCUN skill_content n'est émis, indépendamment du paramètre par appel ou des avertissements BP. Recommandé ACTIVÉ comme premier choix ; désactivez uniquement pour les modèles avec de très petites fenêtres de contexte. Désactiver ceci peut dégrader la précision des écritures. Nécessite un redémarrage pour prendre effet.",
|
|
122
128
|
"features.enable_strict_mandatory_bps.label": "Mode strict de bonnes pratiques",
|
|
@@ -205,6 +211,7 @@
|
|
|
205
211
|
"tools.badges.read_only": "lecture seule",
|
|
206
212
|
"tools.badges.writes": "écrit",
|
|
207
213
|
"tools.badges.deletes": "supprime",
|
|
214
|
+
"tools.notes.gated_disabled": "Désactivé. Activez {setting} — l'interrupteur de l'outil d'édition de politiques se trouve dans l'onglet Politiques de sécurité des outils — puis redémarrez l'application (add-on).",
|
|
208
215
|
"tools.notes.beta_disabled": "Bêta. Définissez {setting} dans la configuration de l'App (add-on) de développement ou la variable d'environnement correspondante (voir docs/beta.md).",
|
|
209
216
|
"tools.notes.env_pinned": "Épinglé par {variable}. Désactivez la variable d'environnement pour modifier ici.",
|
|
210
217
|
"tools.notes.bps_locked": "Verrouillé pendant que le mode strict de bonnes pratiques est activé. Désactivez d'abord ce paramètre pour désactiver cet outil.",
|
|
@@ -300,6 +307,7 @@
|
|
|
300
307
|
"policies.errors.update_tool": "Échec de la mise à jour de la politique de sécurité de l'outil : {message}",
|
|
301
308
|
"policies.errors.remove_rule": "Échec de la suppression de la règle : {message}",
|
|
302
309
|
"policies.errors.master_save": "Le changement des politiques de sécurité des outils n'a pas été enregistré. Le serveur a toujours la valeur précédente.",
|
|
310
|
+
"policies.errors.manage_tool_save": "La modification de l'outil d'édition de politiques n'a pas été enregistrée. Le serveur conserve toujours la valeur précédente.",
|
|
303
311
|
"policies.operations.sync_gated": "Synchroniser le bouton de contrôle",
|
|
304
312
|
"policies.operations.save_rule": "Enregistrer la règle",
|
|
305
313
|
"policies.operations.save_global": "Enregistrer les paramètres globaux",
|
|
@@ -430,6 +438,8 @@
|
|
|
430
438
|
"addon.backup_hint.description": "Ajuste le libellé de l'invite que le LLM voit dans la description de\nl'outil `ha_manage_backup(scope='snapshot')` pour suggérer une sauvegarde\ncomplète de Home Assistant avant les opérations risquées (p. ex.\nsuppressions groupées d'appareils). Concerne UNIQUEMENT cet ensemble\nd'invites côté LLM.\n\nPour les instantanés automatiques par modification d'automatisations /\nscripts / assistants / etc., utilisez le bouton **Activer la sauvegarde\nautomatique des modifications** séparé ci-dessous.",
|
|
431
439
|
"addon.secret_path.name": "Remplacement du chemin secret",
|
|
432
440
|
"addon.secret_path.description": "Chemin HTTP personnalisé optionnel pour le serveur MCP. Laissez vide pour utiliser le chemin sécurisé généré automatiquement.\n",
|
|
441
|
+
"addon.enable_security_policy_tool.name": "Permettre aux agents IA de modifier les politiques de sécurité des outils",
|
|
442
|
+
"addon.enable_security_policy_tool.description": "Enregistre l'outil ha_manage_security_policy, qui permet aux agents IA connectés de lire et de réécrire les politiques de sécurité des outils — y compris la suppression des portes d'approbation. Désactivé par défaut. Indépendant de l'option Politiques de sécurité des outils ci-dessus : ceci contrôle qui peut modifier les règles, et non si elles sont appliquées. L'outil ne peut pas voir ou décider des approbations en attente. Pour garder un humain dans la boucle, soumettez l'outil à une approbation avant de l'activer : activez « soumis à la sécurité » pour Gérer la politique de sécurité dans l'onglet Outils de l'interface web. Nécessite un redémarrage pour prendre effet.",
|
|
433
443
|
"addon.enable_auto_backup.name": "Activer la sauvegarde automatique des modifications",
|
|
434
444
|
"addon.enable_auto_backup.description": "Capture un instantané par entité avant chaque appel d'outil MCP d'écriture/destructeur encapsulé (automatisation, script, scène, assistant, tableau de bord, étiquette, catégorie, groupe, zone, zone géographique, calendrier, todo, entité, intégration et outils de suppression/suppression associés). Les instantanés sont stockés sous forme de fichiers YAML dans /data/ha_mcp_backups/ (remplacement via HAMCP_BACKUP_DIR) et listés, restaurés ou supprimés via l'onglet Sauvegardes dans l'interface Web des paramètres ou via ha_manage_backup(scope='edits', ...). Au mieux — les erreurs enregistrent un WARNING mais ne bloquent jamais l'écriture sous-jacente. Activé par défaut ; décochez pour désactiver. Nécessite un redémarrage pour prendre effet.",
|
|
435
445
|
"addon.auto_backup_throttle_minutes.name": "Limitation de la sauvegarde automatique (minutes)",
|
|
@@ -738,7 +748,7 @@
|
|
|
738
748
|
},
|
|
739
749
|
"ha_manage_hacs": {
|
|
740
750
|
"title": "Gérer HACS",
|
|
741
|
-
"description": "Gérer HACS (Home Assistant Community Store) — installer/mettre à jour, supprimer
|
|
751
|
+
"description": "Gérer HACS (Home Assistant Community Store) — installer/mettre à jour, supprimer, ajouter des dépôts personnalisés, ou actualiser un dépôt dans"
|
|
742
752
|
},
|
|
743
753
|
"ha_manage_pipeline": {
|
|
744
754
|
"title": "Gérer le pipeline Assist",
|
|
@@ -748,6 +758,10 @@
|
|
|
748
758
|
"title": "Gérer les réseaux radio",
|
|
749
759
|
"description": "Gère les réseaux Z-Wave, Zigbee, Matter et Thread dans Home Assistant."
|
|
750
760
|
},
|
|
761
|
+
"ha_manage_security_policy": {
|
|
762
|
+
"title": "Gérer la politique de sécurité",
|
|
763
|
+
"description": "Lire et réécrire la politique de sécurité des outils qui soumet les appels d'outils à enjeux élevés à l'approbation de l'utilisateur."
|
|
764
|
+
},
|
|
751
765
|
"ha_manage_theme": {
|
|
752
766
|
"title": "Gérer les thèmes",
|
|
753
767
|
"description": "Gère les thèmes d'interface Home Assistant."
|
{ha_mcp_dev-8.1.1.dev2277 → ha_mcp_dev-8.1.1.dev2280}/src/ha_mcp/settings_ui/locales/it.json
RENAMED
|
@@ -52,8 +52,12 @@
|
|
|
52
52
|
"policies.title": "Criteri di sicurezza degli strumenti",
|
|
53
53
|
"policies.intro": "Controllo delle approvazioni per singolo strumento sulle chiamate ad alto rischio. Usa la scheda <strong>Strumenti</strong> per attivare il controllo su uno strumento, poi affina qui le condizioni di corrispondenza e la durata dell'approvazione. Operatori di condizione: è uguale a, è uno di, regex, contiene, è presente, maggiore di, minore di.",
|
|
54
54
|
"policies.global.title": "Impostazioni globali",
|
|
55
|
+
"policies.global.unknown": "Impossibile leggere le impostazioni del server. I due interruttori sottostanti sono mostrati come sconosciuti e non possono essere modificati finché la pagina non si ricarica correttamente; questa vista potrebbe non riflettere ciò che il server impone.",
|
|
55
56
|
"policies.global.enabled.label": "Attiva i criteri di sicurezza degli strumenti",
|
|
56
57
|
"policies.global.enabled.help": "Interruttore principale. Rispecchia l'opzione in Impostazioni del server. Disattivato per impostazione predefinita. Attivalo e riavvia l'app (componente aggiuntivo) per abilitare il middleware di controllo. Mentre è disattivo, le regole qui sotto restano salvate ma non vengono applicate.",
|
|
58
|
+
"policies.global.manage_tool.label": "Consenti agli agenti IA di modificare queste policy (ha_manage_security_policy)",
|
|
59
|
+
"policies.global.manage_tool.help": "Registra lo strumento ha_manage_security_policy, che legge e sostituisce il documento di policy modificato da questa scheda. Disattivato per impostazione predefinita. Indipendente dall'interruttore principale sopra: questo controlla chi può modificare le regole, non se vengono applicate. Lo strumento non espone operazioni di coda di approvazione in sospeso, ma un'azione di impostazione protetta da policy può comunque richiedere approvazione.",
|
|
60
|
+
"policies.global.manage_tool.warning": "L'attivazione di questa opzione consente agli agenti IA connessi di riscrivere le policy di sicurezza in questa scheda, inclusa la rimozione dei gate di approvazione. Per mantenere un essere umano nel ciclo, proteggi lo strumento PRIMA di abilitarlo: nella scheda Strumenti, attiva \"protetto da sicurezza\" per Gestisci Policy di Sicurezza. Questa regola può essere creata mentre lo strumento è ancora disattivato, e viene applicata una volta che l'interruttore principale sopra è attivo e il server è stato riavviato. Riavvia l'App (add-on) dopo aver attivato o disattivato uno dei due interruttori.",
|
|
57
61
|
"policies.global.wait.label": "Secondi di attesa (5-600)",
|
|
58
62
|
"policies.global.wait.help": "Quanto il middleware attende un'approvazione prima di andare in timeout.",
|
|
59
63
|
"policies.global.ttl.label": "TTL dell'approvazione in minuti (1-60)",
|
|
@@ -117,6 +121,8 @@
|
|
|
117
121
|
"features.enable_tool_security_policies.help": "Subordina all'approvazione dell'utente le chiamate agli strumenti ad alto rischio (controllo di serrature e allarmi, scrittura di automazioni, ecc.). Quando viene chiamato uno strumento controllato, l'agente chiede all'utente di aprire la scheda Criteri di sicurezza degli strumenti nell'interfaccia web e di fare clic su Approva prima che la chiamata prosegua. Le regole per singolo strumento, con condizioni facoltative sugli argomenti, si configurano nella scheda Criteri di sicurezza degli strumenti. Disattivato per impostazione predefinita. Richiede il riavvio per avere effetto.",
|
|
118
122
|
"features.read_only_mode.label": "Modalità di sola lettura",
|
|
119
123
|
"features.read_only_mode.help": "Disattiva tutti gli strumenti di scrittura e impedisce a qualunque strumento di eseguire chiamate di scrittura o distruttive. Gli strumenti misti di lettura/scrittura (backup, componenti aggiuntivi, preferenze energetiche, pipeline vocali e la modalità codice quando è attiva) restano disponibili, ma con le operazioni di scrittura bloccate. È la stessa opzione della scheda Strumenti nell'interfaccia web. Disattivata per impostazione predefinita. Richiede il riavvio per avere effetto.",
|
|
124
|
+
"features.redact_secrets.label": "Rimuovi Segreti",
|
|
125
|
+
"features.redact_secrets.help": "Rimuove i segreti dalle risposte degli strumenti prima che raggiungano l'assistente IA. Le opzioni dell'add-on e i campi di integrazione contrassegnati come password vengono sostituiti con un marcatore impostato/vuoto (così \"questa credenziale è configurata?\" rimane una domanda a cui si può rispondere), e altre risposte degli strumenti vengono ripulite dai valori segreti che il server ha già visto (i valori più corti di 6 caratteri vengono saltati, poiché la sostituzione di frammenti minuscoli corromperebbe l'output non correlato). I campi non contrassegnati come password dal loro schema non possono essere rilevati. Disattivato per impostazione predefinita.",
|
|
120
126
|
"features.enable_mandatory_bps.label": "Allega le skill di buone pratiche alle scritture",
|
|
121
127
|
"features.enable_mandatory_bps.help": "Interruttore principale della funzione che consegna il contenuto delle skill agli strumenti di scrittura (issue #1182). Quando è attivo (impostazione predefinita), i sei strumenti di scrittura della configurazione (automazioni, script, scene, helper, dashboard, YAML grezzo) allegano i file di riferimento canonici sulle buone pratiche di Home Assistant sotto `skill_content` a ogni scrittura riuscita e incorporano automaticamente le sezioni di riferimento citate dagli avvisi sulle buone pratiche. Ogni strumento espone inoltre un parametro `MandatoryBPS` per singola chiamata, che l'agente può impostare su false nelle chiamate successive una volta ottenuti i contenuti. Quando questo interruttore principale è disattivo NON viene inviato alcun skill_content, a prescindere dal parametro per singola chiamata o dagli avvisi sulle buone pratiche. Si consiglia di lasciarlo attivo come prima scelta; disattivalo solo per modelli con finestre di contesto molto piccole. Disattivarlo può peggiorare l'accuratezza delle scritture. Richiede il riavvio per avere effetto.",
|
|
122
128
|
"features.enable_strict_mandatory_bps.label": "Modalità rigorosa per le buone pratiche",
|
|
@@ -205,6 +211,7 @@
|
|
|
205
211
|
"tools.badges.read_only": "sola lettura",
|
|
206
212
|
"tools.badges.writes": "scrive",
|
|
207
213
|
"tools.badges.deletes": "elimina",
|
|
214
|
+
"tools.notes.gated_disabled": "Disabilitato. Attiva {setting} — l'interruttore dello strumento di modifica delle policy si trova nella scheda Policy di Sicurezza degli Strumenti — poi riavvia l'App (add-on).",
|
|
208
215
|
"tools.notes.beta_disabled": "Beta. Imposta {setting} nella configurazione dell'app (componente aggiuntivo) di sviluppo o la variabile d'ambiente corrispondente (vedi docs/beta.md).",
|
|
209
216
|
"tools.notes.env_pinned": "Fissato da {variable}. Togli la variabile d'ambiente per modificarlo qui.",
|
|
210
217
|
"tools.notes.bps_locked": "Bloccato mentre la modalità rigorosa per le buone pratiche è attiva. Disattiva prima quell'impostazione per disabilitare questo strumento.",
|
|
@@ -300,6 +307,7 @@
|
|
|
300
307
|
"policies.errors.update_tool": "Aggiornamento del criterio di sicurezza dello strumento non riuscito: {message}",
|
|
301
308
|
"policies.errors.remove_rule": "Rimozione della regola non riuscita: {message}",
|
|
302
309
|
"policies.errors.master_save": "La modifica dei criteri di sicurezza degli strumenti non è stata salvata. Il server ha ancora il valore precedente.",
|
|
310
|
+
"policies.errors.manage_tool_save": "La modifica dello strumento di modifica delle policy non è stata salvata. Il server ha ancora il valore precedente.",
|
|
303
311
|
"policies.operations.sync_gated": "Sincronizzare l'opzione di controllo",
|
|
304
312
|
"policies.operations.save_rule": "Salvare la regola",
|
|
305
313
|
"policies.operations.save_global": "Salvare le impostazioni globali",
|
|
@@ -430,6 +438,8 @@
|
|
|
430
438
|
"addon.backup_hint.description": "Regola il tono del suggerimento che l'LLM vede nella descrizione dello\nstrumento `ha_manage_backup(scope='snapshot')` su quando proporre un\nbackup completo di Home Assistant prima di operazioni rischiose (per\nesempio eliminazioni massive di dispositivi). Riguarda SOLTANTO quella\nfrase rivolta all'LLM.\n\nPer gli snapshot automatici a ogni modifica di automazioni / script /\nhelper / ecc., usa l'opzione separata **Attiva il backup automatico\ndelle modifiche** qui sotto.",
|
|
431
439
|
"addon.secret_path.name": "Percorso segreto personalizzato",
|
|
432
440
|
"addon.secret_path.description": "Percorso HTTP personalizzato facoltativo per il server MCP. Lascialo vuoto per usare il percorso sicuro generato automaticamente.\n",
|
|
441
|
+
"addon.enable_security_policy_tool.name": "Consenti agli agenti IA di modificare le policy di sicurezza degli strumenti",
|
|
442
|
+
"addon.enable_security_policy_tool.description": "Registra lo strumento ha_manage_security_policy, che consente agli agenti IA connessi di leggere e riscrivere le policy di sicurezza degli strumenti — inclusa la rimozione dei gate di approvazione. Disattivato per impostazione predefinita. Indipendente dall'opzione Policy di Sicurezza degli Strumenti sopra: questo controlla chi può modificare le regole, non se vengono applicate. Lo strumento non può vedere o decidere le approvazioni in sospeso. Per mantenere un essere umano nel ciclo, proteggi lo strumento prima di abilitarlo: attiva \"protetto da sicurezza\" per Gestisci Policy di Sicurezza nella scheda Strumenti dell'interfaccia web. Richiede un riavvio per avere effetto.",
|
|
433
443
|
"addon.enable_auto_backup.name": "Attiva il backup automatico delle modifiche",
|
|
434
444
|
"addon.enable_auto_backup.description": "Cattura uno snapshot per entità prima di ogni chiamata coperta a uno strumento MCP di scrittura o distruttivo (automazione, script, scena, helper, dashboard, etichetta, categoria, gruppo, zona, area, calendario, cose da fare, entità, integrazione e i relativi strumenti di rimozione). Gli snapshot vengono salvati come file YAML in /data/ha_mcp_backups/ (modificabile con HAMCP_BACKUP_DIR) e si elencano, ripristinano o eliminano dalla scheda Backup dell'interfaccia web delle impostazioni oppure con ha_manage_backup(scope='edits', ...). Funziona secondo il criterio del massimo impegno: gli errori registrano un WARNING ma non bloccano mai la scrittura sottostante. Attivo per impostazione predefinita; togli la spunta per rinunciarvi. Richiede il riavvio per avere effetto.",
|
|
435
445
|
"addon.auto_backup_throttle_minutes.name": "Limitazione del backup automatico (minuti)",
|
|
@@ -738,7 +748,7 @@
|
|
|
738
748
|
},
|
|
739
749
|
"ha_manage_hacs": {
|
|
740
750
|
"title": "Gestisci HACS",
|
|
741
|
-
"description": "Gestisci HACS (Home Assistant Community Store) —
|
|
751
|
+
"description": "Gestisci HACS (Home Assistant Community Store) — installa/aggiorna, rimuovi, aggiungi repository personalizzati o aggiorna repository in"
|
|
742
752
|
},
|
|
743
753
|
"ha_manage_pipeline": {
|
|
744
754
|
"title": "Gestisci le pipeline di Assist",
|
|
@@ -748,6 +758,10 @@
|
|
|
748
758
|
"title": "Gestisci le radio (Z-Wave / Zigbee / Matter / Thread)",
|
|
749
759
|
"description": "Gestisce le radio di Home Assistant: Z-Wave, Zigbee, Matter e Thread."
|
|
750
760
|
},
|
|
761
|
+
"ha_manage_security_policy": {
|
|
762
|
+
"title": "Gestisci Policy di Sicurezza",
|
|
763
|
+
"description": "Leggi e riscrivi la policy di sicurezza degli strumenti che protegge le chiamate a strumenti ad alto rischio dietro l'approvazione dell'utente."
|
|
764
|
+
},
|
|
751
765
|
"ha_manage_theme": {
|
|
752
766
|
"title": "Gestisci i temi dell'interfaccia",
|
|
753
767
|
"description": "Gestisce i temi dell'interfaccia di Home Assistant."
|