ha-mcp-dev 7.14.2.dev2198__tar.gz → 8.0.0.dev2203__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-7.14.2.dev2198/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.0.0.dev2203}/PKG-INFO +1 -1
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/pyproject.toml +1 -1
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/fr.json +56 -56
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/zh-Hans.json +18 -18
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/LICENSE +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/README.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/setup.cfg +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/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 = "
|
|
7
|
+
version = "8.0.0.dev2203"
|
|
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-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/fr.json
RENAMED
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
"tabs.policies": "Politiques de sécurité des outils",
|
|
22
22
|
"tabs.visibility": "Visibilité des entités",
|
|
23
23
|
"tabs.accessibility": "Accessibilité",
|
|
24
|
-
"notice.restart_required": "⚠ Modifications enregistrées.
|
|
24
|
+
"notice.restart_required": "⚠ Modifications enregistrées. Redémarrez HA-MCP pour qu'elles prennent effet. Au prochain démarrage, HA-MCP supprime complètement les outils désactivés de la liste des outils MCP. Reconnectez ou actualisez ensuite le serveur MCP dans votre client IA (p. ex. actualisez la liste des outils sur claude.ai, réajoutez/actualisez le connecteur dans ChatGPT, ou fermez et rouvrez Claude Desktop) pour qu'il recharge la liste des outils. Redémarrer l'App (add-on) ou Home Assistant ne rafraîchit PAS la liste d'outils mise en cache par le client. ChatGPT continue parfois de servir sa liste d'outils mise en cache même après la suppression et le réajout du connecteur — si des outils manquent encore, supprimez le connecteur et créez-en un nouveau sous un nom différent.",
|
|
25
25
|
"notice.shared_settings": "Les fonctionnalités à l'échelle du serveur (recherche d'outils, édition de configuration YAML, outils de système de fichiers, etc.) apparaissent à la fois dans l'onglet <strong>Paramètres du serveur</strong> et dans la page de configuration de l'App (add-on) ; ce sont les mêmes paramètres dans les deux cas. Les deux surfaces restent synchronisées après le redémarrage de l'App (add-on). Les modifications nécessitent un redémarrage de HA-MCP.",
|
|
26
|
-
"notice.env_pins": "Les outils listés dans les variables d'environnement <code>DISABLED_TOOLS</code> ou <code>PINNED_TOOLS</code> sont verrouillés en lecture seule ;
|
|
26
|
+
"notice.env_pins": "Les outils listés dans les variables d'environnement <code>DISABLED_TOOLS</code> ou <code>PINNED_TOOLS</code> sont verrouillés en lecture seule ; désactivez la variable d'environnement pour les modifier ici. Les bascules d'épinglage n'ont d'effet que lorsque la recherche d'outils est activée (onglet Paramètres du serveur ou page de configuration de l'App (add-on)).",
|
|
27
27
|
"actions.restart_addon": "Redémarrer l'App (add-on)",
|
|
28
28
|
"actions.save": "Enregistrer",
|
|
29
29
|
"actions.save_settings": "Enregistrer les paramètres",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"tools.read_only.help": "Désactive tous les outils d'écriture et empêche tout outil d'effectuer des appels d'écriture ou destructeurs. Les outils mixtes lecture/écriture (sauvegardes, Apps (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.",
|
|
34
34
|
"tools.read_only.unknown": "Impossible de lire les paramètres du serveur. Statut du mode lecture seule inconnu ; cette vue peut ne pas refléter ce que le serveur applique.",
|
|
35
35
|
"tools.search": "Rechercher des outils...",
|
|
36
|
-
"server.auto_save_notice": "Les paramètres de cet onglet sont enregistrés automatiquement. Les modifications prennent effet seulement après avoir redémarré l'App (add-on) (application côté serveur) et reconnecté ou actualisé le serveur MCP dans
|
|
36
|
+
"server.auto_save_notice": "Les paramètres de cet onglet sont enregistrés automatiquement. Les modifications prennent effet seulement après avoir redémarré l'App (add-on) (application côté serveur) et reconnecté ou actualisé le serveur MCP dans votre client IA (rechargez la liste des outils), p. ex. actualisez la liste des outils sur claude.ai, réajoutez ou actualisez le connecteur dans ChatGPT, ou fermez et rouvrez Claude Desktop. ChatGPT continue parfois de servir sa liste d'outils mise en cache même après la suppression et le réajout du connecteur — si des outils manquent encore, supprimez le connecteur et créez-en un nouveau sous un nom différent.",
|
|
37
37
|
"server.sections.search": "Recherche & correspondance",
|
|
38
38
|
"server.sections.operations": "Opérations",
|
|
39
39
|
"server.sections.tool_surface": "Surface des outils",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"server.sections.beta": "Fonctionnalités bêta (dangereuses)",
|
|
43
43
|
"server.sections.developer": "Développeur",
|
|
44
44
|
"server.sidecar.disable": "Désactiver définitivement le serveur de paramètres",
|
|
45
|
-
"server.sidecar.disable_title": "Désactive définitivement l'interface des paramètres : arrête ce serveur ET écrit ~/.ha-mcp/settings_ui_disabled pour qu'il ne redémarre pas lors des futurs lancements de ha-mcp.
|
|
45
|
+
"server.sidecar.disable_title": "Désactive définitivement l'interface des paramètres : arrête ce serveur ET écrit ~/.ha-mcp/settings_ui_disabled pour qu'il ne redémarre pas lors des futurs lancements de ha-mcp. Supprimez ce fichier pour réactiver.",
|
|
46
46
|
"backups.loading": "Chargement de l'état des sauvegardes…",
|
|
47
47
|
"backups.filter.domain": "Domaine (p. ex. automation)",
|
|
48
48
|
"backups.filter.domain_aria": "Filtrer les sauvegardes par domaine",
|
|
@@ -50,10 +50,10 @@
|
|
|
50
50
|
"backups.filter.entity_aria": "Filtrer les sauvegardes par ID d'entité",
|
|
51
51
|
"backups.bulk_delete": "Suppression groupée des correspondances…",
|
|
52
52
|
"policies.title": "Politiques de sécurité des outils",
|
|
53
|
-
"policies.intro": "Contrôle d'approbation par outil pour les appels à enjeux élevés.
|
|
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
55
|
"policies.global.enabled.label": "Activer les politiques de sécurité des outils",
|
|
56
|
-
"policies.global.enabled.help": "Interrupteur principal. Reflète le bouton dans les paramètres du serveur. Désactivé par défaut.
|
|
56
|
+
"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.",
|
|
57
57
|
"policies.global.wait.label": "Secondes d'attente (5-600)",
|
|
58
58
|
"policies.global.wait.help": "Durée pendant laquelle le middleware attend une approbation avant d'expirer.",
|
|
59
59
|
"policies.global.ttl.label": "Durée de vie de l'approbation en minutes (1-60)",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"policies.pending.title": "Approbations en attente",
|
|
63
63
|
"policies.pending.empty": "Aucune approbation en attente.",
|
|
64
64
|
"policies.rules.title": "Outils contrôlés",
|
|
65
|
-
"policies.rules.empty": "Aucun outil actuellement soumis à un contrôle de sécurité.
|
|
65
|
+
"policies.rules.empty": "Aucun outil actuellement soumis à un contrôle de sécurité. Activez le contrôle par outil depuis l'onglet <a href=\"#\" data-panel-link=\"tools\">Outils</a>.",
|
|
66
66
|
"accessibility.intro": "Ces paramètres s'appliquent immédiatement et sont enregistrés dans ce navigateur et sur le serveur, ils survivent donc aux redémarrages dans tous les modes (y compris stdio, où la page des paramètres change de port à chaque session). Le site de documentation offre les mêmes contrôles dans sa barre de navigation ; il n'a pas de serveur et enregistre par navigateur.",
|
|
67
67
|
"accessibility.storage_blocked": "Votre navigateur bloque le stockage du site ; les choix s'appliquent uniquement pour cette session.",
|
|
68
68
|
"accessibility.theme.title": "Thème",
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"visibility.entities.help": "Une entity_id par ligne. Celles-ci restent masquées même sans entrée dans le registre des entités.",
|
|
102
102
|
"visibility.entities.denied": "ID d'entités refusées",
|
|
103
103
|
"visibility.allowlist.title": "Restreindre à une liste d'autorisation",
|
|
104
|
-
"visibility.allowlist.help": "Avancé : lorsqu'un champ de la liste d'autorisation est défini, le filtre s'inverse — seules les entités correspondant à une liste d'autorisation restent visibles, tout le reste est masqué (y compris les entités ajoutées ultérieurement).
|
|
104
|
+
"visibility.allowlist.help": "Avancé : lorsqu'un champ de la liste d'autorisation est défini, le filtre s'inverse — seules les entités correspondant à une liste d'autorisation restent visibles, tout le reste est masqué (y compris les entités ajoutées ultérieurement). Laissez les trois vides pour désactiver.",
|
|
105
105
|
"visibility.allowlist.areas": "Zones autorisées",
|
|
106
106
|
"visibility.allowlist.labels": "Étiquettes autorisées",
|
|
107
107
|
"visibility.allowlist.entities_help": "ID d'entités autorisées, une par ligne.",
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
"visibility.assist.help": "Masque les entités non exposées à l'assistant vocal Assist (« conversation ») de Home Assistant, en miroir de la liste Paramètres > Assistants vocaux > Exposer. Ajoute deux lectures websocket par recherche lorsqu'il est activé.",
|
|
111
111
|
"visibility.assist.only_exposed": "Afficher uniquement les entités exposées à Assist",
|
|
112
112
|
"features.enable_tool_search.label": "Activer la recherche d'outils",
|
|
113
|
-
"features.enable_tool_search.help": "Remplace le catalogue complet d'outils par une découverte basée sur la recherche. Réduit le contexte inactif d'environ 90 %, à près de 5K tokens. ⚠️ N'
|
|
113
|
+
"features.enable_tool_search.help": "Remplace le catalogue complet d'outils par une découverte basée sur la recherche. Réduit le contexte inactif d'environ 90 %, à près de 5K tokens. ⚠️ N'activez PAS ceci dans les clients qui ont leur propre recherche d'outils intégrée / outils différés (claude.ai, Claude Desktop, Claude Code) — les deux couches de recherche entrent en conflit, et la recherche d'outils intégrée du client y est le meilleur choix ; laissez ceci désactivé. Le report des outils dépend de la combinaison client/modèle : utilisez ceci lorsque votre configuration charge le catalogue complet d'emblée — modèles sans outils différés natifs (p. ex. Gemini, modèles locaux compatibles OpenAI, Claude Haiku), clients qui intègrent tous les schémas d'outils quel que soit le modèle (p. ex. GitHub Copilot CLI), ou fenêtres de contexte plus petites. Certains modèles Codex et ChatGPT incluent aussi des outils différés — vérifiez directement auprès de votre client/modèle quelles fonctionnalités il possède pour ne pas laisser ceci activé inutilement. Les outils sont trouvés via ha_search_tools et exécutés via des proxys catégorisés (lecture/écriture/suppression). Nécessite un redémarrage pour prendre effet.",
|
|
114
114
|
"features.tool_search_max_results.label": "Résultats max. de la recherche d'outils",
|
|
115
115
|
"features.tool_search_max_results.help": "Nombre maximum d'outils renvoyés par ha_search_tools lorsque la recherche d'outils est activée. Des valeurs plus basses (2-3) économisent des tokens de contexte mais peuvent manquer des outils pertinents. Plage : 2-10. Nécessite un redémarrage.",
|
|
116
116
|
"features.enable_tool_security_policies.label": "Activer les politiques de sécurité des outils (avancé)",
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
"features.read_only_mode.label": "Mode lecture seule",
|
|
119
119
|
"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.",
|
|
120
120
|
"features.enable_mandatory_bps.label": "Attacher les compétences de bonnes pratiques aux écritures",
|
|
121
|
-
"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 ;
|
|
121
|
+
"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
122
|
"features.enable_strict_mandatory_bps.label": "Mode strict de bonnes pratiques",
|
|
123
123
|
"features.enable_strict_mandatory_bps.help": "Mode strict : empêche le client d'utiliser l'outil jusqu'à ce qu'il puisse prouver qu'il a lu les bonnes pratiques. Lorsqu'il est activé, les six outils d'écriture de bonnes pratiques (automatisations, scripts, scènes, assistants, tableaux de bord, YAML brut) sont bloqués et renvoient une erreur dirigeant le client vers la compétence de bonnes pratiques via ha_get_skill_guide et lui demandant de renvoyer la clé d'accusé de réception obtenue. Lorsqu'il est activé, l'outil ha_get_skill_guide est verrouillé activé — il est le seul éditeur de la clé d'accusé de réception. Enfant de l'option « Attacher les compétences de bonnes pratiques aux écritures » ci-dessus et inerte lorsque ce parent est désactivé. Nécessite un redémarrage pour prendre effet.",
|
|
124
124
|
"features.enable_beta_features.label": "Activer les fonctionnalités bêta (principal)",
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
"features.enable_yaml_config_editing.label": "Activer l'édition de configuration YAML (bêta)",
|
|
127
127
|
"features.enable_yaml_config_editing.help": "Fonctionnalité bêta. Permet aux assistants IA d'ajouter, remplacer ou supprimer des clés de premier niveau dans configuration.yaml et packages/*.yaml. Seules les clés autorisées sont permises (p. ex. template, sensor, command_line, mqtt, knx) ; les clés principales comme homeassistant, http et recorder sont bloquées. Chaque édition valide la syntaxe YAML, exécute une vérification de configuration et crée une sauvegarde automatique. Les modifications de la plupart des clés nécessitent un redémarrage complet de HA pour prendre effet. Voir docs/beta.md pour les limitations connues. Les outils dédiés (automatisations, scripts, scènes, assistants, capteurs de template) doivent être préférés lorsqu'ils sont disponibles. REQUIERT que le bouton principal « Activer les fonctionnalités bêta » ci-dessus (et dans l'interface Web) soit activé — sinon ce sous-drapeau est ignoré à l'exécution indépendamment de sa valeur ici.",
|
|
128
128
|
"features.enable_yaml_edit_confirm.label": "Exiger une confirmation pour les modifications YAML (aperçu des différences)",
|
|
129
|
-
"features.enable_yaml_edit_confirm.help": "Sous-bouton de l'édition de configuration YAML, ACTIVÉ par défaut (recommandé). Le premier appel ha_config_set_yaml renvoie un diff unifié de exactement ce qui changerait sur le disque plus un jeton de confirmation et n'écrit rien ; la modification n'est appliquée que lorsque l'appel est répété avec ce jeton. Existe pour que les modifications non intentionnelles en dehors de la modification demandée soient détectées avant d'atteindre le disque (problème #1720).
|
|
129
|
+
"features.enable_yaml_edit_confirm.help": "Sous-bouton de l'édition de configuration YAML, ACTIVÉ par défaut (recommandé). Le premier appel ha_config_set_yaml renvoie un diff unifié de exactement ce qui changerait sur le disque plus un jeton de confirmation et n'écrit rien ; la modification n'est appliquée que lorsque l'appel est répété avec ce jeton. Existe pour que les modifications non intentionnelles en dehors de la modification demandée soient détectées avant d'atteindre le disque (problème #1720). Désactivez uniquement pour économiser un aller-retour par modification.",
|
|
130
130
|
"features.enable_yaml_packages_automation.label": "Autoriser automation dans packages/*.yaml",
|
|
131
131
|
"features.enable_yaml_packages_automation.help": "Sous-bouton de l'édition de configuration YAML. Lorsqu'il est activé, ha_config_set_yaml accepte yaml_path='automation' dans packages/*.yaml. Lorsqu'il est désactivé, l'appel est rejeté à la fois côté client et côté serveur. L'outil en mode stockage (ha_config_set_automation) n'est pas affecté. Désactivé par défaut ; n'a d'effet que lorsque « Activer l'édition de configuration YAML » ci-dessus est également activé.",
|
|
132
132
|
"features.enable_yaml_packages_script.label": "Autoriser script dans packages/*.yaml",
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
"features.enable_yaml_packages_scene.label": "Autoriser scene dans packages/*.yaml",
|
|
135
135
|
"features.enable_yaml_packages_scene.help": "Sous-bouton de l'édition de configuration YAML. Lorsqu'il est activé, ha_config_set_yaml accepte yaml_path='scene' dans packages/*.yaml. Lorsqu'il est désactivé, l'appel est rejeté à la fois côté client et côté serveur. L'outil en mode stockage (ha_config_set_scene) n'est pas affecté. Désactivé par défaut ; n'a d'effet que lorsque « Activer l'édition de configuration YAML » ci-dessus est également activé.",
|
|
136
136
|
"features.enable_filesystem_tools.label": "Activer les outils de système de fichiers (bêta)",
|
|
137
|
-
"features.enable_filesystem_tools.help": "Définit HAMCP_ENABLE_FILESYSTEM_TOOLS=true. Active l'accès direct en lecture/écriture aux fichiers de votre système de fichiers Home Assistant. ATTENTION : Cela donne au serveur MCP un accès direct sensible aux fichiers de votre système.
|
|
137
|
+
"features.enable_filesystem_tools.help": "Définit HAMCP_ENABLE_FILESYSTEM_TOOLS=true. Active l'accès direct en lecture/écriture aux fichiers de votre système de fichiers Home Assistant. ATTENTION : Cela donne au serveur MCP un accès direct sensible aux fichiers de votre système. Activez uniquement si vous faites confiance à l'assistant IA pour les opérations sur fichiers. Nécessite un redémarrage pour prendre effet. REQUIERT que le bouton principal « Activer les fonctionnalités bêta » ci-dessus (et dans l'interface Web) soit activé — sinon ce sous-drapeau est ignoré à l'exécution indépendamment de sa valeur ici.",
|
|
138
138
|
"features.enable_code_mode.label": "Activer le bac à sable d'outils personnalisés (bêta)",
|
|
139
139
|
"features.enable_code_mode.help": "Fonctionnalité bêta. Active l'outil ha_manage_custom_tool, qui permet aux assistants IA de créer, exécuter, enregistrer et supprimer du code Python personnalisé dans un bac à sable sécurisé lorsqu'aucun outil intégré ne peut traiter la demande. Le code s'exécute dans un interpréteur isolé sans accès au système de fichiers ni accès réseau arbitraire. Le code du bac à sable peut atteindre l'API REST HA (api_get/api_post), envoyer des commandes WebSocket (ws_send), appeler des outils MCP existants (call_tool) ou supprimer un outil enregistré (delete_saved_tool). Les outils enregistrés persistent dans /data/saved_tools.json par défaut afin qu'ils survivent aux redémarrages de l'add-on et soient visibles par tout client pouvant se connecter. Voir docs/beta.md pour les limitations connues. Nécessite un redémarrage pour prendre effet. REQUIERT que le bouton principal « Activer les fonctionnalités bêta » ci-dessus (et dans l'interface Web) soit activé — sinon ce sous-drapeau est ignoré à l'exécution indépendamment de sa valeur ici.",
|
|
140
140
|
"features.enable_lite_docstrings.label": "Activer les docstrings allégées des outils (bêta)",
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
"status.saved": "Enregistré.",
|
|
163
163
|
"status.saved_restart": "Enregistré. Redémarrage requis.",
|
|
164
164
|
"status.saved_llm_api": "Enregistré. L'exposition de l'API LLM s'applique au prochain message de l'agent.",
|
|
165
|
-
"status.saved_reload_failed": "Enregistré (rechargement échoué ;
|
|
165
|
+
"status.saved_reload_failed": "Enregistré (rechargement échoué ; actualisez pour vérifier).",
|
|
166
166
|
"status.nothing_editable": "Rien de modifiable.",
|
|
167
167
|
"status.stopping": "Arrêt...",
|
|
168
168
|
"status.stopped_offline": "Arrêté. Cette page va se déconnecter",
|
|
@@ -184,7 +184,7 @@
|
|
|
184
184
|
"errors.stop_failed": "Échec de l'arrêt",
|
|
185
185
|
"errors.restart_failed": "Échec du redémarrage",
|
|
186
186
|
"errors.failed_detail": "Échec : {detail}",
|
|
187
|
-
"errors.addon_not_back": "L'App (add-on) n'est pas revenue en ligne.
|
|
187
|
+
"errors.addon_not_back": "L'App (add-on) n'est pas revenue en ligne. Rechargez manuellement",
|
|
188
188
|
"errors.unparseable_suffix": " (corps de réponse non analysable)",
|
|
189
189
|
"common.operation_failed": "{operation} a échoué : {detail}",
|
|
190
190
|
"common.enabled": "activé",
|
|
@@ -193,21 +193,21 @@
|
|
|
193
193
|
"common.minutes_short": "{count} min",
|
|
194
194
|
"common.bytes": "{count} octets",
|
|
195
195
|
"common.none": "(aucun)",
|
|
196
|
-
"notice.restart.addon": "⚠ Modifications enregistrées.
|
|
197
|
-
"notice.restart.embedded": "⚠ Modifications enregistrées.
|
|
198
|
-
"notice.restart.sidecar": "⚠ Modifications enregistrées.
|
|
199
|
-
"notice.restart.standalone": "⚠ Modifications enregistrées.
|
|
200
|
-
"server.sidecar.confirm_disable": "⚠ Désactiver PERMANENTMENT le serveur de paramètres ?\n\nCeci arrête le serveur et écrit un marqueur qui l'empêche de redémarrer. Pour restaurer l'accès,
|
|
201
|
-
"tools.empty": "Aucun outil trouvé. Le sidecar lit ~/.ha-mcp/tool_metadata.json. S'il est manquant ou vide,
|
|
196
|
+
"notice.restart.addon": "⚠ Modifications enregistrées. Cliquez sur « Redémarrer l'App (add-on) » pour qu'elles prennent effet. Les outils désactivés seront supprimés de la liste des outils MCP au prochain démarrage. Actualisez ensuite la liste des outils dans votre client IA ; redémarrer l'App seule ne rafraîchit pas la liste mise en cache du client.",
|
|
197
|
+
"notice.restart.embedded": "⚠ Modifications enregistrées. Cliquez sur « Redémarrer le serveur HA-MCP » pour recharger l'intégration dans le processus. Actualisez ensuite la liste des outils MCP dans votre client IA.",
|
|
198
|
+
"notice.restart.sidecar": "⚠ Modifications enregistrées. Quittez complètement et rouvrez votre client MCP pour qu'elles prennent effet. Les outils désactivés seront supprimés de la liste des outils MCP au prochain démarrage.",
|
|
199
|
+
"notice.restart.standalone": "⚠ Modifications enregistrées. Redémarrez le processus ha-mcp, puis actualisez la liste des outils MCP dans votre client IA.",
|
|
200
|
+
"server.sidecar.confirm_disable": "⚠ Désactiver PERMANENTMENT le serveur de paramètres ?\n\nCeci arrête le serveur et écrit un marqueur qui l'empêche de redémarrer. Pour restaurer l'accès, supprimez ~/.ha-mcp/settings_ui_disabled et désactivez HA_MCP_DISABLE_SETTINGS_UI. Continuer ?",
|
|
201
|
+
"tools.empty": "Aucun outil trouvé. Le sidecar lit ~/.ha-mcp/tool_metadata.json. S'il est manquant ou vide, redémarrez votre client MCP. Voir ~/.ha-mcp/sidecar.log pour les détails.",
|
|
202
202
|
"tools.group_count": "{enabled}/{total} activés",
|
|
203
203
|
"tools.group_toggle_title": "Activer/désactiver tous les outils de ce groupe",
|
|
204
204
|
"tools.badges.mandatory": "obligatoire",
|
|
205
205
|
"tools.badges.read_only": "lecture seule",
|
|
206
206
|
"tools.badges.writes": "écrit",
|
|
207
207
|
"tools.badges.deletes": "supprime",
|
|
208
|
-
"tools.notes.beta_disabled": "Bêta.
|
|
209
|
-
"tools.notes.env_pinned": "Épinglé par {variable}.
|
|
210
|
-
"tools.notes.bps_locked": "Verrouillé pendant que le mode strict de bonnes pratiques est activé.
|
|
208
|
+
"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
|
+
"tools.notes.env_pinned": "Épinglé par {variable}. Désactivez la variable d'environnement pour modifier ici.",
|
|
210
|
+
"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.",
|
|
211
211
|
"tools.notes.read_only_off": "Désactivé. Le mode lecture seule est activé ; les outils d'écriture sont désactivés.",
|
|
212
212
|
"tools.notes.read_only_partial": "Mode lecture seule : les opérations d'écriture de cet outil sont bloquées ; les opérations de lecture restent disponibles.",
|
|
213
213
|
"tools.llm_api.label": "API LLM",
|
|
@@ -219,7 +219,7 @@
|
|
|
219
219
|
"tools.states.enabled": "activé",
|
|
220
220
|
"tools.states.pinned": "épinglé",
|
|
221
221
|
"tools.states.security_gated": "soumis au contrôle de sécurité",
|
|
222
|
-
"tools.security.enable_first": "
|
|
222
|
+
"tools.security.enable_first": "Activez d'abord les politiques de sécurité des outils dans la configuration de l'App (add-on).",
|
|
223
223
|
"tools.summary.total": "{count} total",
|
|
224
224
|
"tools.summary.enabled": "{count} activés",
|
|
225
225
|
"tools.summary.pinned": "{count} épinglés",
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
"backup.fields.auto_backup_retain_per_entity.label": "Conserver par entité",
|
|
233
233
|
"backup.fields.auto_backup_retain_per_entity.help": "Nombre maximum d'instantanés conservés par entité (1–10000). Les plus anciens sont retirés.",
|
|
234
234
|
"backup.fields.auto_backup_dir.label": "Remplacement du répertoire de sauvegarde",
|
|
235
|
-
"backup.fields.auto_backup_dir.help": "
|
|
235
|
+
"backup.fields.auto_backup_dir.help": "Laissez vide pour utiliser le répertoire par défaut ; sinon entrez un chemin absolu.",
|
|
236
236
|
"backup.fields.auto_backup_calendar_lookahead_days.label": "Prévision du calendrier (jours)",
|
|
237
237
|
"backup.fields.auto_backup_calendar_lookahead_days.help": "Jusqu'où interroger les événements du calendrier pour les instantanés pré-édition. Plage 1–365.",
|
|
238
238
|
"backup.fields.enable_snapshot_delete.label": "Autoriser la suppression d'instantanés",
|
|
@@ -257,30 +257,30 @@
|
|
|
257
257
|
"backup.state.retain": "Conserver par entité",
|
|
258
258
|
"backup.state.directory": "Répertoire",
|
|
259
259
|
"backup.state.total": "Total",
|
|
260
|
-
"backup.empty": "Pas encore de sauvegardes.
|
|
260
|
+
"backup.empty": "Pas encore de sauvegardes. Activez la sauvegarde automatique et modifiez une entité pour en créer une.",
|
|
261
261
|
"backup.modal.view": "Voir : {name}",
|
|
262
262
|
"backup.modal.diff": "Diff : {name}",
|
|
263
263
|
"backup.identical": "(identique)",
|
|
264
264
|
"backup.confirm.restore": "Restaurer {name} ?\n\nCeci écrase l'état actuel de l'entité. Une sauvegarde de sécurité est d'abord effectuée.",
|
|
265
265
|
"backup.confirm.delete": "Supprimer {name} ? Cette action est irréversible.",
|
|
266
266
|
"backup.restored": "Restauré. Sauvegarde de sécurité : {name}",
|
|
267
|
-
"backup.bulk.prompt_days": "Supprimer les sauvegardes plus anciennes que N jours (
|
|
268
|
-
"backup.bulk.filter_required": "
|
|
267
|
+
"backup.bulk.prompt_days": "Supprimer les sauvegardes plus anciennes que N jours (laissez vide pour utiliser uniquement les filtres actuels) :",
|
|
268
|
+
"backup.bulk.filter_required": "Définissez au moins un filtre (Domaine, Entité ou âge en jours).",
|
|
269
269
|
"backup.bulk.confirm": "Supprimer toutes les sauvegardes correspondant à : {filters} ?",
|
|
270
270
|
"backup.bulk.deleted": "{count} sauvegarde(s) supprimée(s)",
|
|
271
271
|
"filesystem.custom.title": "Répertoires de système de fichiers personnalisés (avancé)",
|
|
272
272
|
"filesystem.custom.help": "Répertoires supplémentaires (un par ligne) que les outils de fichiers peuvent <strong>lire et écrire</strong>. Les chemins de configuration relatifs et les volumes frères HAOS autorisés sont pris en charge. S'applique immédiatement.",
|
|
273
273
|
"filesystem.custom.blocked": "Toujours bloqués : {paths}, les traversées de chemin (<code>..</code>) et les chemins absolus en dehors des volumes HAOS autorisés.",
|
|
274
|
-
"filesystem.custom.enable_first": "
|
|
274
|
+
"filesystem.custom.enable_first": "Activez d'abord les fonctionnalités bêta et les outils de système de fichiers ci-dessus pour modifier.",
|
|
275
275
|
"filesystem.custom.unavailable": "Les répertoires personnalisés sont actuellement indisponibles.",
|
|
276
276
|
"filesystem.custom.save": "Enregistrer les répertoires",
|
|
277
277
|
"filesystem.custom.saved_rejected": "Enregistré. Rejeté (bloqué ou invalide) : {paths}",
|
|
278
|
-
"origins.env_locked": "Défini via une variable d'environnement ;
|
|
278
|
+
"origins.env_locked": "Défini via une variable d'environnement ; désactivez-la pour modifier ici.",
|
|
279
279
|
"origins.addon_synced": "Synchronisé avec l'onglet Configuration de l'App (add-on). Redémarrage requis après l'enregistrement.",
|
|
280
|
-
"origins.env_var_unset": "Défini via la variable d'environnement {variable} ;
|
|
281
|
-
"origins.beta_legacy_bridge": "Auto-activé en mode legacy de l'App (add-on).
|
|
280
|
+
"origins.env_var_unset": "Défini via la variable d'environnement {variable} ; désactivez-la pour modifier ici.",
|
|
281
|
+
"origins.beta_legacy_bridge": "Auto-activé en mode legacy de l'App (add-on). Définissez <code>enable_beta_features</code> explicitement dans la Configuration pour prendre le contrôle. (env : {variable})",
|
|
282
282
|
"origins.addon_runtime": "Défini par l'environnement d'exécution de l'App (add-on) géré par le Supervisor ; ne peut pas être modifié ici. (env : {variable})",
|
|
283
|
-
"origins.display_only": "Affichage uniquement.
|
|
283
|
+
"origins.display_only": "Affichage uniquement. Modifiez via la variable d'environnement ou les paramètres de l'App (add-on).",
|
|
284
284
|
"features.errors.network": "Drapeaux de fonctionnalités indisponibles (erreur réseau en atteignant /api/settings/features).",
|
|
285
285
|
"features.errors.http": "Drapeaux de fonctionnalités indisponibles (HTTP {status}).",
|
|
286
286
|
"features.errors.json": "La réponse des drapeaux de fonctionnalités n'était pas un JSON valide.",
|
|
@@ -288,13 +288,13 @@
|
|
|
288
288
|
"advanced.errors.http": "Paramètres avancés indisponibles (HTTP {status}).",
|
|
289
289
|
"advanced.errors.json": "La réponse des paramètres avancés n'était pas un JSON valide.",
|
|
290
290
|
"advanced.sidecar.stdio_only": "Disponible uniquement en mode stdio. Ce serveur HTTP n'a pas de sidecar d'interface de paramètres à épingler.",
|
|
291
|
-
"advanced.enable_dev_mode.confirm": "⚠ Activer le mode développeur ?\n\nAprès le redémarrage, les outils de développement cachés seront exposés aux agents IA connectés.
|
|
291
|
+
"advanced.enable_dev_mode.confirm": "⚠ Activer le mode développeur ?\n\nAprès le redémarrage, les outils de développement cachés seront exposés aux agents IA connectés. Activez uniquement pour le développement et les tests.",
|
|
292
292
|
"advanced.code_mode_saved_tools_path.addon_locked": "Codé en dur à <code>/data/saved_tools.json</code> en mode App (add-on) pour que les outils enregistrés survivent aux mises à jour.",
|
|
293
293
|
"advanced.code_mode_saved_tools_path.blank_warning": "Si vide, les outils personnalisés sont conservés uniquement en mémoire et perdus au redémarrage.",
|
|
294
|
-
"policies.errors.conflict": "{operation} a échoué : la politique a été modifiée dans un autre onglet ou une autre session.
|
|
294
|
+
"policies.errors.conflict": "{operation} a échoué : la politique a été modifiée dans un autre onglet ou une autre session. Rechargez et réappliquez vos modifications.",
|
|
295
295
|
"policies.errors.load": "Impossible de charger la politique : {status}",
|
|
296
296
|
"policies.errors.reach_server": "Impossible d'atteindre le serveur : {message}",
|
|
297
|
-
"policies.errors.corrupt_suffix": " (tool_policy.json semble corrompu ;
|
|
297
|
+
"policies.errors.corrupt_suffix": " (tool_policy.json semble corrompu ; modifiez-le ou supprimez-le sur le volume /data de l'App (add-on))",
|
|
298
298
|
"policies.errors.load_detail": "Échec du chargement de la politique : {detail}",
|
|
299
299
|
"policies.errors.update_tool": "Échec de la mise à jour de la politique de sécurité de l'outil : {message}",
|
|
300
300
|
"policies.errors.remove_rule": "Échec de la suppression de la règle : {message}",
|
|
@@ -329,28 +329,28 @@
|
|
|
329
329
|
"policies.card.confirm_remove": "Retirer \"{tool}\" de la politique de sécurité ?",
|
|
330
330
|
"policies.editor.any_argument_title": "Faire correspondre chaque argument d'appel à cette condition.",
|
|
331
331
|
"policies.editor.any_argument": "(n'importe quel argument)",
|
|
332
|
-
"policies.editor.other_path": "(autre,
|
|
332
|
+
"policies.editor.other_path": "(autre, tapez un chemin)",
|
|
333
333
|
"policies.editor.value_source_http": "échec de la récupération de la source de valeur (HTTP {status}) ; repli sur texte libre",
|
|
334
334
|
"policies.editor.value_source_error": "échec de la récupération de la source de valeur ({message}) ; repli sur texte libre",
|
|
335
335
|
"policies.editor.schema_http": "échec de la récupération du schéma d'outil (HTTP {status}) ; repli sur texte libre",
|
|
336
336
|
"policies.editor.schema_error": "échec de la récupération du schéma d'outil ({message}) ; repli sur texte libre",
|
|
337
|
-
"policies.editor.hint.exists": "
|
|
338
|
-
"policies.editor.hint.list": "
|
|
337
|
+
"policies.editor.hint.exists": "Laissez vide pour contrôler la présence de l'argument indépendamment de sa valeur.",
|
|
338
|
+
"policies.editor.hint.list": "Choisissez une ou plusieurs valeurs, ou tapez une liste JSON. Laissez vide pour contrôler n'importe quelle valeur.",
|
|
339
339
|
"policies.editor.hint.regex": "Une expression régulière pour faire correspondre l'argument.",
|
|
340
|
-
"policies.editor.hint.contains": "Une sous-chaîne ou un élément de liste.
|
|
340
|
+
"policies.editor.hint.contains": "Une sous-chaîne ou un élément de liste. Laissez vide pour contrôler n'importe quelle valeur.",
|
|
341
341
|
"policies.editor.hint.number": "Un nombre à comparer.",
|
|
342
|
-
"policies.editor.hint.equals": "La valeur à laquelle l'argument doit être égal.
|
|
342
|
+
"policies.editor.hint.equals": "La valeur à laquelle l'argument doit être égal. Laissez vide pour contrôler n'importe quelle valeur.",
|
|
343
343
|
"policies.editor.loading_choices": "Chargement des choix…",
|
|
344
|
-
"policies.editor.pick_value": "(
|
|
344
|
+
"policies.editor.pick_value": "(choisissez une valeur)",
|
|
345
345
|
"policies.editor.placeholder.blank": "généralement laissé vide",
|
|
346
|
-
"policies.editor.validation.pick_one_or_more": "
|
|
347
|
-
"policies.editor.validation.pick_value": "
|
|
346
|
+
"policies.editor.validation.pick_one_or_more": "choisissez au moins une valeur",
|
|
347
|
+
"policies.editor.validation.pick_value": "choisissez une valeur",
|
|
348
348
|
"policies.editor.validation.value_required": "la valeur est requise pour op={operator}",
|
|
349
349
|
"policies.editor.validation.empty_list": "liste vide pour op={operator}",
|
|
350
350
|
"policies.editor.validation.argument_required": "l'argument est requis",
|
|
351
351
|
"policies.pending.offline": "Contact perdu avec le serveur ({message}). Nouvelle tentative.",
|
|
352
|
-
"policies.pending.disabled": "Les politiques de sécurité des outils sont désactivées.
|
|
353
|
-
"policies.pending.unavailable": "Approbations en direct indisponibles.
|
|
352
|
+
"policies.pending.disabled": "Les politiques de sécurité des outils sont désactivées. Activez-les et redémarrez l'App (add-on) pour activer le contrôle.",
|
|
353
|
+
"policies.pending.unavailable": "Approbations en direct indisponibles. Vérifiez le journal de l'App (add-on).",
|
|
354
354
|
"policies.pending.expires": "Expire : {time}",
|
|
355
355
|
"policies.pending.already_decided": "Cette approbation était déjà {decision}, peut-être par un autre onglet ou une autre session.",
|
|
356
356
|
"policies.pending.decision.approved": "approuvée",
|
|
@@ -358,9 +358,9 @@
|
|
|
358
358
|
"policies.pending.invalid_token": "Ce jeton d'approbation n'est plus valide (déjà consommé ou expiré).",
|
|
359
359
|
"policies.pending.action_failed": "L'action d'approbation a échoué : {detail}",
|
|
360
360
|
"visibility.errors.reach_server": "Impossible d'atteindre le serveur : {message}",
|
|
361
|
-
"visibility.errors.corrupt_suffix": " (entity_visibility.json semble corrompu ;
|
|
361
|
+
"visibility.errors.corrupt_suffix": " (entity_visibility.json semble corrompu ; modifiez-le ou supprimez-le sur le volume /data de l'App (add-on))",
|
|
362
362
|
"visibility.errors.load_detail": "Échec du chargement de la configuration de visibilité : {detail}",
|
|
363
|
-
"visibility.errors.conflict": "La configuration a été modifiée dans un autre onglet ou une autre session.
|
|
363
|
+
"visibility.errors.conflict": "La configuration a été modifiée dans un autre onglet ou une autre session. Rechargez la page, puis réappliquez vos modifications.",
|
|
364
364
|
"advanced.homeassistant_url.label": "URL de Home Assistant",
|
|
365
365
|
"advanced.homeassistant_url.help": "Affichage uniquement. Défini via HOMEASSISTANT_URL ou géré par l'App (add-on).",
|
|
366
366
|
"advanced.homeassistant_token.label": "Jeton Home Assistant",
|
|
@@ -370,7 +370,7 @@
|
|
|
370
370
|
"advanced.max_retries.label": "Nombre max. de nouvelles tentatives de requêtes HA",
|
|
371
371
|
"advanced.max_retries.help": "Budget de nouvelles tentatives par appel REST échoué. Plage 0–20. Redémarrage requis.",
|
|
372
372
|
"advanced.verify_ssl.label": "Vérifier les certificats SSL",
|
|
373
|
-
"advanced.verify_ssl.help": "
|
|
373
|
+
"advanced.verify_ssl.help": "Désactivez la vérification TLS uniquement sur les réseaux de confiance. Redémarrage requis.",
|
|
374
374
|
"advanced.fuzzy_threshold.label": "Seuil de recherche floue",
|
|
375
375
|
"advanced.fuzzy_threshold.help": "Des valeurs plus basses permettent une correspondance d'entités plus lâche. Plage 0–100.",
|
|
376
376
|
"advanced.automation_config_time_budget.label": "Budget de temps de configuration d'automatisation (s)",
|
|
@@ -390,13 +390,13 @@
|
|
|
390
390
|
"advanced.backup_hint.choices.weak": "Faible",
|
|
391
391
|
"advanced.backup_hint.choices.auto": "Automatique",
|
|
392
392
|
"advanced.dashboard_screenshot_engine_url.label": "URL du moteur de capture d'écran du tableau de bord",
|
|
393
|
-
"advanced.dashboard_screenshot_engine_url.help": "URL de base du moteur de capture d'écran.
|
|
393
|
+
"advanced.dashboard_screenshot_engine_url.help": "URL de base du moteur de capture d'écran. Laissez vide pour la découverte automatique par le Supervisor. S'applique immédiatement.",
|
|
394
394
|
"advanced.enable_websocket.label": "Activer WebSocket",
|
|
395
395
|
"advanced.enable_websocket.help": "Surveillance d'état WebSocket. La désactivation revient à l'interrogation et dégrade de nombreux outils. Redémarrage requis.",
|
|
396
396
|
"advanced.enabled_tool_modules.label": "Modules d'outils activés",
|
|
397
397
|
"advanced.enabled_tool_modules.help": "Noms de modules séparés par des virgules, ou 'all'. Redémarrage requis.",
|
|
398
398
|
"advanced.enable_dashboard_partial_tools.label": "Outils de mise à jour partielle du tableau de bord",
|
|
399
|
-
"advanced.enable_dashboard_partial_tools.help": "Outils de tableau de bord partiel économes en tokens.
|
|
399
|
+
"advanced.enable_dashboard_partial_tools.help": "Outils de tableau de bord partiel économes en tokens. Désactivez pour les clients avec une utilisation programmatique des outils.",
|
|
400
400
|
"advanced.mcp_server_name.label": "Nom du serveur MCP",
|
|
401
401
|
"advanced.mcp_server_name.help": "Signalé dans la poignée de main MCP. Redémarrage requis.",
|
|
402
402
|
"advanced.mcp_server_version.label": "Version du serveur MCP",
|
|
@@ -424,11 +424,11 @@
|
|
|
424
424
|
"advanced.enable_dev_mode.label": "Mode développeur",
|
|
425
425
|
"advanced.enable_dev_mode.help": "⚠ Enregistre des outils cachés qui peuvent modifier les paramètres et remplacer le serveur en cours d'exécution. Développement et tests uniquement. Redémarrage requis.",
|
|
426
426
|
"addon.backup_hint.name": "Niveau d'indication d'instantané HA complet (côté LLM)",
|
|
427
|
-
"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.,
|
|
427
|
+
"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.",
|
|
428
428
|
"addon.secret_path.name": "Remplacement du chemin secret",
|
|
429
|
-
"addon.secret_path.description": "Chemin HTTP personnalisé optionnel pour le serveur MCP.
|
|
429
|
+
"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",
|
|
430
430
|
"addon.enable_auto_backup.name": "Activer la sauvegarde automatique des modifications",
|
|
431
|
-
"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 ;
|
|
431
|
+
"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.",
|
|
432
432
|
"addon.auto_backup_throttle_minutes.name": "Limitation de la sauvegarde automatique (minutes)",
|
|
433
433
|
"addon.auto_backup_throttle_minutes.description": "Fenêtre de limitation par entité. 0 (par défaut) capture un instantané à chaque écriture encapsulée. N>0 capture au plus un instantané par N minutes par entité. Plage 0–1440.",
|
|
434
434
|
"addon.auto_backup_retain_per_entity.name": "Conservation de la sauvegarde automatique (par entité)",
|
|
@@ -442,8 +442,8 @@
|
|
|
442
442
|
"addon.pinned_tools.name": "Outils épinglés (séparés par des virgules)",
|
|
443
443
|
"addon.pinned_tools.description": "Les outils listés ici sont verrouillés épinglés — ils apparaissent en haut de l'onglet Outils et ne peuvent pas être retirés de l'interface Web des paramètres sans d'abord supprimer cette option. Utile en combinaison avec la recherche d'outils. Noms d'outils séparés par des virgules.",
|
|
444
444
|
"addon.verify_ssl.name": "Vérifier le certificat TLS",
|
|
445
|
-
"addon.verify_ssl.description": "Vérifie le certificat TLS du serveur Home Assistant. L'add-on se connecte via le proxy Supervisor, donc cela n'a normalement aucun effet et doit rester activé.
|
|
446
|
-
"addon_stable.enable_tool_search.description": "Remplace le catalogue complet d'outils par une découverte basée sur la recherche. Réduit le contexte inactif d'environ 90 %, à près de 5K tokens. ⚠️ N'
|
|
445
|
+
"addon.verify_ssl.description": "Vérifie le certificat TLS du serveur Home Assistant. L'add-on se connecte via le proxy Supervisor, donc cela n'a normalement aucun effet et doit rester activé. Désactivez uniquement si vous avez reconfiguré l'add-on pour communiquer avec HA via un nom d'hôte HTTPS public avec un certificat auto-signé ou une discordance de nom d'hôte. Désactiver affaiblit la sécurité du transport — laissez activé sauf si vous savez que vous en avez besoin. Nécessite un redémarrage pour prendre effet.",
|
|
446
|
+
"addon_stable.enable_tool_search.description": "Remplace le catalogue complet d'outils par une découverte basée sur la recherche. Réduit le contexte inactif d'environ 90 %, à près de 5K tokens. ⚠️ N'activez PAS ceci dans les clients qui ont leur propre recherche d'outils intégrée / outils différés (claude.ai, Claude Desktop, Claude Code) — les deux couches de recherche entrent en conflit, et la recherche d'outils intégrée du client y est le meilleur choix ; laissez ceci désactivé. Le report des outils dépend de la combinaison client/modèle : utilisez ceci lorsque votre configuration charge le catalogue complet d'emblée — modèles sans outils différés natifs (p. ex. Gemini, modèles locaux compatibles OpenAI, Claude Haiku), clients qui intègrent tous les schémas d'outils quel que soit le modèle (p. ex. GitHub Copilot CLI), ou fenêtres de contexte plus petites. Certains modèles Codex et ChatGPT incluent aussi des outils différés — vérifiez directement auprès de votre client/modèle quelles fonctionnalités il possède pour ne pas laisser ceci activé inutilement. Les outils sont trouvés via ha_search_tools et exécutés via des proxys catégorisés (lecture/écriture/suppression). Nécessite un redémarrage pour prendre effet. Reconnectez ou actualisez ensuite le serveur MCP dans votre client IA pour qu'il recharge la liste des outils. Un redémarrage de l'add-on seul n'actualise PAS la liste d'outils mise en cache d'un client ; ceci s'applique après chaque changement de paramètre ici."
|
|
447
447
|
},
|
|
448
448
|
"tool_groups": {
|
|
449
449
|
"Add-ons": "Add-ons",
|
{ha_mcp_dev-7.14.2.dev2198 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/zh-Hans.json
RENAMED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"tabs.policies": "工具安全策略",
|
|
22
22
|
"tabs.visibility": "实体可见性",
|
|
23
23
|
"tabs.accessibility": "无障碍",
|
|
24
|
-
"notice.restart_required": "⚠ 更改已保存。请重启 HA-MCP 使其生效。下次启动时,HA-MCP 会从 MCP
|
|
24
|
+
"notice.restart_required": "⚠ 更改已保存。请重启 HA-MCP 使其生效。下次启动时,HA-MCP 会从 MCP 工具列表中彻底移除已禁用的工具。随后请在您的 AI 客户端中重新连接或刷新 MCP 服务器(例如在 claude.ai 上刷新工具列表、在 ChatGPT 中重新添加/刷新连接器,或关闭并重新打开 Claude Desktop)以重新加载工具列表。仅重启应用(插件)或 Home Assistant 不会刷新客户端缓存的工具列表。ChatGPT 有时在删除并重新添加连接器后仍会继续使用缓存的工具列表——如果工具仍然缺失,请删除该连接器并用一个不同的名称重新创建。",
|
|
25
25
|
"notice.shared_settings": "服务器级功能(工具搜索、YAML 配置编辑、文件系统工具等)会同时出现在<strong>服务器设置</strong>选项卡和应用(插件)配置页中;无论在哪里设置都是同一份配置。在应用(插件)重启后,两个入口会保持同步。更改需要重启 HA-MCP 才能生效。",
|
|
26
26
|
"notice.env_pins": "列在 <code>DISABLED_TOOLS</code> 或 <code>PINNED_TOOLS</code> 环境变量中的工具被锁定为只读;取消该环境变量才能在此编辑。固定开关仅在启用工具搜索时生效(服务器设置选项卡或应用(插件)配置页)。",
|
|
27
27
|
"actions.restart_addon": "重启应用(插件)",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"tools.read_only.help": "关闭所有写入工具,并阻止任何工具进行写入或破坏性调用。读写混合工具(备份、应用(插件)、能源偏好、语音流水线,以及启用时的代码模式)仍可用,但其写入操作被阻止。",
|
|
34
34
|
"tools.read_only.unknown": "无法读取服务器设置。只读模式状态未知;此视图可能无法反映服务器实际执行的策略。",
|
|
35
35
|
"tools.search": "搜索工具…",
|
|
36
|
-
"server.auto_save_notice": "
|
|
36
|
+
"server.auto_save_notice": "此选项卡上的设置会自动保存。更改仅在重启应用(插件)(在服务端生效)并在您的 AI 客户端中重新连接或刷新 MCP 服务器(重新加载工具列表)后才会生效,例如在 claude.ai 上刷新工具列表、在 ChatGPT 中重新添加或刷新连接器,或关闭并重新打开 Claude Desktop。ChatGPT 有时在删除并重新添加连接器后仍会继续使用缓存的工具列表——如果工具仍然缺失,请删除该连接器并用一个不同的名称重新创建。",
|
|
37
37
|
"server.sections.search": "搜索与匹配",
|
|
38
38
|
"server.sections.operations": "操作",
|
|
39
39
|
"server.sections.tool_surface": "工具面",
|
|
@@ -64,9 +64,9 @@
|
|
|
64
64
|
"policies.rules.title": "已门控工具",
|
|
65
65
|
"policies.rules.empty": "当前没有工具被安全门控。请从<a href=\"#\" data-panel-link=\"tools\">工具</a>选项卡启用逐工具门控。",
|
|
66
66
|
"accessibility.intro": "这些设置立即生效,并保存在此浏览器和服务器上,因此在各种模式(包括 stdio 模式,该模式下设置页每次会话都会转移到新端口)重启后依然保留。文档站点在导航栏中提供相同的控件;它没有服务器,按浏览器保存。",
|
|
67
|
-
"accessibility.storage_blocked": "
|
|
67
|
+
"accessibility.storage_blocked": "您的浏览器正在阻止站点存储;选择仅对本次会话生效。",
|
|
68
68
|
"accessibility.theme.title": "主题",
|
|
69
|
-
"accessibility.theme.help": "
|
|
69
|
+
"accessibility.theme.help": "一键配色方案。默认为自动,跟随您的系统偏好并在其变化时实时切换。",
|
|
70
70
|
"accessibility.theme.preset": "主题预设",
|
|
71
71
|
"accessibility.theme.paper": "纸张",
|
|
72
72
|
"accessibility.theme.gray": "灰色",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"accessibility.text_size.title": "文字大小",
|
|
75
75
|
"accessibility.text_size.help": "缩放根字体大小。浏览器缩放(Ctrl/Cmd +)仍可在此基础上叠加使用。",
|
|
76
76
|
"accessibility.colors.title": "自定义颜色",
|
|
77
|
-
"accessibility.colors.help": "
|
|
77
|
+
"accessibility.colors.help": "在所选主题之上自选颜色。每个色板会打开您系统的可视化取色器。",
|
|
78
78
|
"accessibility.colors.background": "背景",
|
|
79
79
|
"accessibility.colors.text": "文字",
|
|
80
80
|
"accessibility.colors.accent": "强调色",
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
"visibility.assist.help": "隐藏未暴露给 Home Assistant 的 Assist(“对话”)语音助手的实体,对应设置 > 语音助手 > 暴露列表。启用时每次搜索额外增加两次 websocket 读取。",
|
|
111
111
|
"visibility.assist.only_exposed": "仅显示暴露给 Assist 的实体",
|
|
112
112
|
"features.enable_tool_search.label": "启用工具搜索",
|
|
113
|
-
"features.enable_tool_search.help": "用基于搜索的发现取代完整工具目录。将空闲上下文减少约 90%,降至约 5K token。⚠️ 如果客户端自带内置工具搜索/延迟工具(claude.ai、Claude Desktop、Claude Code
|
|
113
|
+
"features.enable_tool_search.help": "用基于搜索的发现取代完整工具目录。将空闲上下文减少约 90%,降至约 5K token。⚠️ 如果客户端自带内置工具搜索/延迟工具(claude.ai、Claude Desktop、Claude Code),请勿启用此功能——两层搜索会相互冲突,且在这些客户端中其内置工具搜索是更好的选择;请保持关闭。工具是否延迟取决于客户端与模型的组合:当您的配置会一次性加载完整目录时才使用此功能——例如没有原生延迟工具的模型(如 Gemini、本地 OpenAI 兼容模型、Claude Haiku)、无论模型如何都会内联全部工具架构的客户端(如 GitHub Copilot CLI),或上下文窗口较小时。部分 Codex 模型和 ChatGPT 也带有延迟工具——请直接向您的客户端/模型确认其具备哪些功能,以免不必要地保持启用此功能。工具通过 ha_search_tools 发现,并通过分类代理(读/写/删)执行。需要重启才能生效。",
|
|
114
114
|
"features.tool_search_max_results.label": "工具搜索最大结果数",
|
|
115
115
|
"features.tool_search_max_results.help": "启用工具搜索时 ha_search_tools 返回的最大工具数。较小的值(2–3)可节省上下文 token,但可能遗漏相关工具。范围:2–10。需要重启。",
|
|
116
116
|
"features.enable_tool_security_policies.label": "启用工具安全策略(高级)",
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
"features.enable_strict_mandatory_bps.label": "严格最佳实践模式",
|
|
123
123
|
"features.enable_strict_mandatory_bps.help": "严格模式:在客户端能证明已阅读最佳实践之前,阻止其使用该工具。开启时,六个最佳实践写入工具(自动化、脚本、场景、辅助元素、仪表盘、原始 YAML)会被阻止并返回错误,指引客户端通过 ha_get_skill_guide 阅读最佳实践技能并回传在那里获得的确认密钥。开启时,ha_get_skill_guide 工具被锁定启用——它是确认密钥的唯一发布方。为上方“写入时附加最佳实践技能”选项的子项,当其父项关闭时无效。需要重启才能生效。",
|
|
124
124
|
"features.enable_beta_features.label": "启用测试版功能(主开关)",
|
|
125
|
-
"features.enable_beta_features.help": "⚠
|
|
125
|
+
"features.enable_beta_features.help": "⚠ 危险——这些工具可能永久损坏您的 Home Assistant 安装。它们会写入您的 YAML 配置、文件系统,安装自定义组件,运行任意沙箱 Python,并编辑 AI 所见的工具文档字符串。无保修、无支持保证——启用即代表您自担风险。开启前请先为 Home Assistant 做备份,切勿在无备份的情况下于生产环境启用。下方 5 个实验性子开关的主网关;即使显式设为 true,当此主开关关闭时,子开关在运行时会被忽略。相同的开关也显示在 Web 设置界面的“测试版功能(危险)”下——任一入口在重启后都会反映到另一入口。",
|
|
126
126
|
"features.enable_yaml_config_editing.label": "启用 YAML 配置编辑(测试版)",
|
|
127
127
|
"features.enable_yaml_config_editing.help": "测试版功能。允许 AI 助手在 configuration.yaml 和 packages/*.yaml 中添加、替换或删除顶级键。仅允许白名单键(例如 template、sensor、command_line、mqtt、knx);核心键如 homeassistant、http、recorder 被阻止。每次编辑都会校验 YAML 语法、运行配置检查,并创建自动备份。大多数键的更改需要完整重启 HA 才能生效。已知限制见 docs/beta.md。可用时使用专用工具(自动化、脚本、场景、辅助元素、模板传感器)更佳。需要上方(及 Web UI 中)的主开关“启用测试版功能”开启——否则无论此处值如何,此子开关在运行时都会被忽略。",
|
|
128
128
|
"features.enable_yaml_edit_confirm.label": "YAML 编辑需确认(差异预览)",
|
|
@@ -134,13 +134,13 @@
|
|
|
134
134
|
"features.enable_yaml_packages_scene.label": "允许 scene 出现在 packages/*.yaml",
|
|
135
135
|
"features.enable_yaml_packages_scene.help": "YAML 配置编辑的子开关。开启时,ha_config_set_yaml 接受 packages/*.yaml 中的 yaml_path='scene'。关闭时,客户端和服务器端都会拒绝该调用。存储模式工具(ha_config_set_scene)不受影响。默认关闭;仅当上方“启用 YAML 配置编辑”也开启时生效。",
|
|
136
136
|
"features.enable_filesystem_tools.label": "启用文件系统工具(测试版)",
|
|
137
|
-
"features.enable_filesystem_tools.help": "设置 HAMCP_ENABLE_FILESYSTEM_TOOLS=true
|
|
137
|
+
"features.enable_filesystem_tools.help": "设置 HAMCP_ENABLE_FILESYSTEM_TOOLS=true。启用对您的 Home Assistant 文件系统的直接文件读/写访问。警告:这会让 MCP 服务器直接读写您的 Home Assistant 文件系统,获得对系统的敏感文件访问权限。仅在信任 AI 助手进行文件操作时才启用。需要重启才能生效。需要上方(及 Web UI 中)的主开关“启用测试版功能”开启——否则无论此处值如何,此子开关在运行时都会被忽略。",
|
|
138
138
|
"features.enable_code_mode.label": "启用自定义工具沙箱(测试版)",
|
|
139
139
|
"features.enable_code_mode.help": "测试版功能。启用 ha_manage_custom_tool 工具,当没有内置工具可处理请求时,让 AI 助手在安全沙箱中创建、运行、保存和删除自定义 Python 代码。代码在隔离的解释器中运行,无文件系统或任意网络访问。沙箱代码可调用 HA REST API(api_get/api_post)、发送 WebSocket 命令(ws_send)、调用现有 MCP 工具(call_tool),或删除已保存工具(delete_saved_tool)。已保存工具默认持久化到 /data/saved_tools.json,以便在插件重启后保留,且对任何能连接的客户端可见。已知限制见 docs/beta.md。需要重启才能生效。需要上方(及 Web UI 中)的主开关“启用测试版功能”开启——否则无论此处值如何,此子开关在运行时都会被忽略。",
|
|
140
140
|
"features.enable_lite_docstrings.label": "启用精简工具文档字符串(测试版)",
|
|
141
141
|
"features.enable_lite_docstrings.help": "测试版功能。将少数重型 ha-mcp 工具(自动化、脚本、场景、辅助元素、仪表盘、ha_call_service、ha_config_set_yaml)上的文档字符串替换为更短的变体,将 schema 和示例细节推迟到 ha_get_skill_guide 工具(或其 skill:// 资源)。警告:这会降低空闲 token 用量,但可能降低 LLM 表现——精简后的描述依赖 LLM 实际调用技能工具或读取技能资源来获取细节,这并不保证(某些模型会跳过额外的工具调用,最终得到的指引反而比之前更少)。最好与支持 MCP 资源的客户端或启用工具搜索搭配使用。需要重启才能生效。需要上方(及 Web UI 中)的主开关“启用测试版功能”开启——否则无论此处值如何,此子开关在运行时都会被忽略。",
|
|
142
142
|
"features.enable_dashboard_screenshot.label": "启用仪表盘截图模式(测试版)",
|
|
143
|
-
"features.enable_dashboard_screenshot.help": "测试版功能——默认关闭。新增 ha_get_dashboard_screenshot 工具,以及仪表盘 get/set 工具上的 include_screenshot / return_screenshot 选项,让 AI 助手可检查一个或多个响应式 Lovelace 图像(例如验证其刚创建的仪表盘)。支持稳定的命名视图、移动/平板/桌面批次,以及 PNG/JPEG/WebP/BMP 输出。渲染在独立的、可选引擎中运行——balloob 的“Puppet”插件(无头 Chromium
|
|
143
|
+
"features.enable_dashboard_screenshot.help": "测试版功能——默认关闭。新增 ha_get_dashboard_screenshot 工具,以及仪表盘 get/set 工具上的 include_screenshot / return_screenshot 选项,让 AI 助手可检查一个或多个响应式 Lovelace 图像(例如验证其刚创建的仪表盘)。支持稳定的命名视图、移动/平板/桌面批次,以及 PNG/JPEG/WebP/BMP 输出。渲染在独立的、可选引擎中运行——balloob 的“Puppet”插件(无头 Chromium)——您安装一次(添加 balloob 的插件仓库,然后安装“Puppet”)并为其提供长期访问令牌;在 Docker/容器部署中,您将该引擎作为 sidecar 运行并设置 HAMCP_DASHBOARD_SCREENSHOT_ENGINE_URL。除非您同时启用此功能并安装引擎,否则不会安装任何重型组件。需要重启才能生效。需要上方(及 Web UI 中)的主开关“启用测试版功能”开启——否则无论此处值如何,此子开关在运行时都会被忽略。",
|
|
144
144
|
"actions.restart_server": "重启 HA-MCP 服务器",
|
|
145
145
|
"actions.restart_confirm": "立即重启 HA-MCP?页面在它恢复在线后会自动重新加载。",
|
|
146
146
|
"actions.view": "查看",
|
|
@@ -193,12 +193,12 @@
|
|
|
193
193
|
"common.minutes_short": "{count} 分钟",
|
|
194
194
|
"common.bytes": "{count} 字节",
|
|
195
195
|
"common.none": "(无)",
|
|
196
|
-
"notice.restart.addon": "⚠ 更改已保存。点击“重启应用(插件)”使其生效。已禁用的工具将在下次启动时从 MCP
|
|
197
|
-
"notice.restart.embedded": "⚠ 更改已保存。点击“重启 HA-MCP
|
|
198
|
-
"notice.restart.sidecar": "⚠
|
|
199
|
-
"notice.restart.standalone": "⚠ 更改已保存。重启 ha-mcp
|
|
196
|
+
"notice.restart.addon": "⚠ 更改已保存。点击“重启应用(插件)”使其生效。已禁用的工具将在下次启动时从 MCP 工具列表中移除。然后在您的 AI 客户端中刷新工具列表;仅重启应用不会刷新客户端缓存的列表。",
|
|
197
|
+
"notice.restart.embedded": "⚠ 更改已保存。点击“重启 HA-MCP 服务器”以重新加载进程内集成。然后在您的 AI 客户端中刷新 MCP 工具列表。",
|
|
198
|
+
"notice.restart.sidecar": "⚠ 更改已保存。完全退出并重新打开您的 MCP 客户端使其生效。已禁用的工具将在下次启动时从 MCP 工具列表中移除。",
|
|
199
|
+
"notice.restart.standalone": "⚠ 更改已保存。重启 ha-mcp 进程,然后在您的 AI 客户端中刷新 MCP 工具列表。",
|
|
200
200
|
"server.sidecar.confirm_disable": "⚠ 永久禁用设置服务器?\n\n这将停止服务器并写入一个标记,阻止其再次启动。要恢复访问,请删除 ~/.ha-mcp/settings_ui_disabled 并取消设置 HA_MCP_DISABLE_SETTINGS_UI。继续?",
|
|
201
|
-
"tools.empty": "未找到工具。旁路服务读取 ~/.ha-mcp/tool_metadata.json
|
|
201
|
+
"tools.empty": "未找到工具。旁路服务读取 ~/.ha-mcp/tool_metadata.json。如果它缺失或为空,请重启您的 MCP 客户端。详情见 ~/.ha-mcp/sidecar.log。",
|
|
202
202
|
"tools.group_count": "{enabled}/{total} 已启用",
|
|
203
203
|
"tools.group_toggle_title": "启用/禁用此组中的所有工具",
|
|
204
204
|
"tools.badges.mandatory": "强制",
|
|
@@ -291,7 +291,7 @@
|
|
|
291
291
|
"advanced.enable_dev_mode.confirm": "⚠ 启用开发者模式?\n\n重启后,隐藏的开发者工具将暴露给已连接的 AI 智能体。仅用于开发和测试。",
|
|
292
292
|
"advanced.code_mode_saved_tools_path.addon_locked": "在应用(插件)模式下硬编码为 <code>/data/saved_tools.json</code>,以便已保存工具在更新后保留。",
|
|
293
293
|
"advanced.code_mode_saved_tools_path.blank_warning": "如果留空,自定义工具仅保留在内存中,重启后丢失。",
|
|
294
|
-
"policies.errors.conflict": "{operation}
|
|
294
|
+
"policies.errors.conflict": "{operation}失败:策略已在另一个标签页或会话中被修改。请重新加载并重新应用您的更改。",
|
|
295
295
|
"policies.errors.load": "无法加载策略:{status}",
|
|
296
296
|
"policies.errors.reach_server": "无法连接到服务器:{message}",
|
|
297
297
|
"policies.errors.corrupt_suffix": " (tool_policy.json 似乎已损坏;请在应用(插件)/data 卷上编辑或删除它)",
|
|
@@ -360,7 +360,7 @@
|
|
|
360
360
|
"visibility.errors.reach_server": "无法连接到服务器:{message}",
|
|
361
361
|
"visibility.errors.corrupt_suffix": " (entity_visibility.json 似乎已损坏;请在应用(插件)/data 卷上编辑或删除它)",
|
|
362
362
|
"visibility.errors.load_detail": "加载可见性配置失败:{detail}",
|
|
363
|
-
"visibility.errors.conflict": "
|
|
363
|
+
"visibility.errors.conflict": "配置已在另一个标签页或会话中被更改。请重新加载页面,然后重新应用您的更改。",
|
|
364
364
|
"advanced.homeassistant_url.label": "Home Assistant URL",
|
|
365
365
|
"advanced.homeassistant_url.help": "仅显示。通过 HOMEASSISTANT_URL 设置或由应用(插件)管理。",
|
|
366
366
|
"advanced.homeassistant_token.label": "Home Assistant 令牌",
|
|
@@ -442,8 +442,8 @@
|
|
|
442
442
|
"addon.pinned_tools.name": "已固定的工具(以逗号分隔)",
|
|
443
443
|
"addon.pinned_tools.description": "此处列出的工具会被锁定为固定——它们显示在“工具”选项卡顶部,且在取消此选项之前无法从网页设置界面取消固定。与工具搜索搭配使用时很有用。以逗号分隔的工具名称。",
|
|
444
444
|
"addon.verify_ssl.name": "验证 TLS 证书",
|
|
445
|
-
"addon.verify_ssl.description": "验证 Home Assistant 服务器的 TLS 证书。插件通过 Supervisor
|
|
446
|
-
"addon_stable.enable_tool_search.description": "用基于搜索的发现取代完整工具目录。将空闲上下文减少约 90%,降至约 5K token。⚠️ 如果客户端自带内置工具搜索/延迟工具(claude.ai、Claude Desktop、Claude Code
|
|
445
|
+
"addon.verify_ssl.description": "验证 Home Assistant 服务器的 TLS 证书。插件通过 Supervisor 代理连接,因此这通常没有影响,应保持启用。仅当您已将插件重新配置为通过公网 HTTPS 主机名与 HA 通信,且证书为自签名或主机名不匹配时才关闭。关闭会削弱传输安全性——除非确有需要,否则请保持开启。需重启才能生效。",
|
|
446
|
+
"addon_stable.enable_tool_search.description": "用基于搜索的发现取代完整工具目录。将空闲上下文减少约 90%,降至约 5K token。⚠️ 如果客户端自带内置工具搜索/延迟工具(claude.ai、Claude Desktop、Claude Code),请勿启用此功能——两层搜索会相互冲突,且在这些客户端中其内置工具搜索是更好的选择;请保持关闭。工具是否延迟取决于客户端与模型的组合:当您的配置会一次性加载完整目录时才使用此功能——例如没有原生延迟工具的模型(如 Gemini、本地 OpenAI 兼容模型、Claude Haiku)、无论模型如何都会内联全部工具架构的客户端(如 GitHub Copilot CLI),或上下文窗口较小时。部分 Codex 模型和 ChatGPT 也带有延迟工具——请直接向您的客户端/模型确认其具备哪些功能,以免不必要地保持启用此功能。工具通过 ha_search_tools 发现,并通过分类代理(读/写/删)执行。需重启插件才能生效——之后请在您的 AI 客户端中重新连接或刷新 MCP 服务器,以便重新加载工具列表。仅重启插件并不会刷新客户端缓存的工具列表;更改此处的任何设置后都适用这一点。"
|
|
447
447
|
},
|
|
448
448
|
"tool_groups": {
|
|
449
449
|
"Add-ons": "插件",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|