ha-mcp-dev 7.14.2.dev2196__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.dev2196/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.0.0.dev2203}/PKG-INFO +1 -1
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/pyproject.toml +11 -3
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/config.py +13 -7
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/fr.json +56 -56
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/zh-Hans.json +18 -18
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/LICENSE +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/README.md +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/setup.cfg +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → 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.dev2196 → 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.dev2196 → 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.dev2196 → 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.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → 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.dev2196 → 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.dev2196 → 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.dev2196 → 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.dev2196 → 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.dev2196 → 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.dev2196 → 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.dev2196 → 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.dev2196 → 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.dev2196 → 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.dev2196 → 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.dev2196 → 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.dev2196 → 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.dev2196 → 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.dev2196 → 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.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → ha_mcp_dev-8.0.0.dev2203}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.14.2.dev2196 → 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
|
|
@@ -187,8 +187,16 @@ ignore = [
|
|
|
187
187
|
# homeassistant-addon-webhook-proxy-dev/ only, per the dev-first/promote-only
|
|
188
188
|
# flow (allow-stable-edit is for stable-only hotfixes, not routine sweeps —
|
|
189
189
|
# see homeassistant-addon-webhook-proxy/AGENTS.md "Dev-first, promote-only").
|
|
190
|
-
#
|
|
191
|
-
|
|
190
|
+
# The -dev entries name where a reset-dev-from-stable run puts those same two
|
|
191
|
+
# stable files (start.py stays put, mcp_proxy/ is renamed to mcp_proxy_dev/),
|
|
192
|
+
# so the auto-opened reset PR lints clean. Scoped per file and per rule so
|
|
193
|
+
# both rules stay live everywhere else in both trees — the -dev tree is where
|
|
194
|
+
# all new webhook-proxy code is authored. Remove all four once the next
|
|
195
|
+
# promote carries the fixes into stable.
|
|
196
|
+
"homeassistant-addon-webhook-proxy/start.py" = ["PLR5501"]
|
|
197
|
+
"homeassistant-addon-webhook-proxy/mcp_proxy/__init__.py" = ["PLC0207"]
|
|
198
|
+
"homeassistant-addon-webhook-proxy-dev/start.py" = ["PLR5501"]
|
|
199
|
+
"homeassistant-addon-webhook-proxy-dev/mcp_proxy_dev/__init__.py" = ["PLC0207"]
|
|
192
200
|
# C901 is enforced repo-wide with no per-file exemptions (the grandfathered
|
|
193
201
|
# list was fully cleared by issue #925). Do NOT add "path" = ["C901"] entries
|
|
194
202
|
# here — extract helpers to bring the function below the threshold instead:
|
|
@@ -33,15 +33,13 @@ OAUTH_MODE_TOKEN = "oauth-mode-token"
|
|
|
33
33
|
# Support for different environment files via HAMCP_ENV_FILE
|
|
34
34
|
env_file = os.getenv("HAMCP_ENV_FILE", ".env")
|
|
35
35
|
env_path = project_root / env_file
|
|
36
|
+
if not env_path.exists():
|
|
37
|
+
# Fallback to default .env
|
|
38
|
+
env_path = project_root / ".env"
|
|
36
39
|
|
|
37
|
-
# Load the
|
|
40
|
+
# Load the environment file (silently, since env vars may come from other sources)
|
|
38
41
|
if env_path.exists():
|
|
39
42
|
load_dotenv(env_path)
|
|
40
|
-
else:
|
|
41
|
-
# Fallback to default .env
|
|
42
|
-
default_env_path = project_root / ".env"
|
|
43
|
-
if default_env_path.exists():
|
|
44
|
-
load_dotenv(default_env_path)
|
|
45
43
|
|
|
46
44
|
|
|
47
45
|
class Settings(BaseSettings):
|
|
@@ -565,7 +563,15 @@ class Settings(BaseSettings):
|
|
|
565
563
|
return port
|
|
566
564
|
|
|
567
565
|
model_config = SettingsConfigDict(
|
|
568
|
-
|
|
566
|
+
# Absolute, and the same file load_dotenv already resolved above. A
|
|
567
|
+
# relative ".env" here would be a second, independent read that
|
|
568
|
+
# pydantic-settings resolves against the process's working directory —
|
|
569
|
+
# so HAMCP_ENV_FILE would not govern it, and a stray .env in whatever
|
|
570
|
+
# directory the server was launched from would silently supply values.
|
|
571
|
+
env_file=str(env_path),
|
|
572
|
+
env_file_encoding="utf-8",
|
|
573
|
+
case_sensitive=False,
|
|
574
|
+
extra="allow",
|
|
569
575
|
)
|
|
570
576
|
|
|
571
577
|
|
{ha_mcp_dev-7.14.2.dev2196 → 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",
|