ha-mcp-dev 7.14.2.dev2173__tar.gz → 7.14.2.dev2175__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.dev2173/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.14.2.dev2175}/PKG-INFO +1 -1
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/pyproject.toml +1 -1
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/__main__.py +6 -2
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/auth/provider.py +1 -1
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/utils/data_paths.py +63 -9
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/LICENSE +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/README.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/setup.cfg +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/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.14.2.
|
|
7
|
+
version = "7.14.2.dev2175"
|
|
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
|
|
@@ -155,13 +155,17 @@ This typically happens when running Docker without the -i flag:
|
|
|
155
155
|
To fix this, use one of the following options:
|
|
156
156
|
|
|
157
157
|
1. Add the -i flag to enable interactive stdin:
|
|
158
|
-
docker run -i -
|
|
158
|
+
docker run -i -v ha-mcp-data:/home/mcpuser/.ha-mcp \\
|
|
159
|
+
-e HOMEASSISTANT_URL=... -e HOMEASSISTANT_TOKEN=... \\
|
|
159
160
|
ghcr.io/homeassistant-ai/ha-mcp:latest
|
|
160
161
|
|
|
161
162
|
2. Use HTTP mode instead (recommended for servers/automation):
|
|
162
|
-
docker run -d -p 8086:8086 -
|
|
163
|
+
docker run -d -p 8086:8086 -v ha-mcp-data:/home/mcpuser/.ha-mcp \\
|
|
164
|
+
-e HOMEASSISTANT_URL=... -e HOMEASSISTANT_TOKEN=... \\
|
|
163
165
|
ghcr.io/homeassistant-ai/ha-mcp:latest ha-mcp-web
|
|
164
166
|
|
|
167
|
+
The -v flag keeps your settings when the container is re-created.
|
|
168
|
+
|
|
165
169
|
For more information, see:
|
|
166
170
|
https://github.com/homeassistant-ai/ha-mcp#-docker
|
|
167
171
|
|
|
@@ -222,7 +222,7 @@ class HomeAssistantOAuthProvider(OAuthProvider):
|
|
|
222
222
|
"Failed to persist OAuth client registry to %s (%s: %s). "
|
|
223
223
|
"Clients will need to re-register after the next restart. "
|
|
224
224
|
"Mount a persistent volume to fix this: "
|
|
225
|
-
"docker run -v
|
|
225
|
+
"docker run -v ha-mcp-data:/home/mcpuser/.ha-mcp ...",
|
|
226
226
|
path,
|
|
227
227
|
type(exc).__name__,
|
|
228
228
|
exc,
|
|
@@ -7,6 +7,7 @@ JSONL).
|
|
|
7
7
|
|
|
8
8
|
from __future__ import annotations
|
|
9
9
|
|
|
10
|
+
import contextlib
|
|
10
11
|
import functools
|
|
11
12
|
import logging
|
|
12
13
|
import os
|
|
@@ -34,11 +35,15 @@ def get_data_dir() -> Path:
|
|
|
34
35
|
location", and silently writing to ``$HOME`` instead would surprise
|
|
35
36
|
users who chose the override deliberately.
|
|
36
37
|
4. ``<tempdir>/ha-mcp`` — last-resort fallback when the previously
|
|
37
|
-
chosen step
|
|
38
|
-
``Path.home()`` resolves to ``/``;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
chosen step cannot be created *or written to* (read-only filesystem;
|
|
39
|
+
``HOME`` unset so ``Path.home()`` resolves to ``/``; a Docker volume
|
|
40
|
+
whose mount point ended up owned by another user; or
|
|
41
|
+
``HA_MCP_CONFIG_DIR`` set but unusable). Loses persistence across
|
|
42
|
+
restarts but lets the server start; users wanting persistence should
|
|
43
|
+
set ``HA_MCP_CONFIG_DIR`` to a writable path.
|
|
44
|
+
|
|
45
|
+
Each candidate is probed with a real write, not just a ``mkdir`` — see
|
|
46
|
+
:func:`_try_write` for why existence alone is not enough.
|
|
42
47
|
|
|
43
48
|
Memoized so the fallback warning typically emits once at startup
|
|
44
49
|
rather than on every save/load HTTP request. ``lru_cache`` serializes
|
|
@@ -53,11 +58,57 @@ def get_data_dir() -> Path:
|
|
|
53
58
|
|
|
54
59
|
|
|
55
60
|
def _try_mkdir(path: Path) -> OSError | None:
|
|
56
|
-
"""Create ``path``
|
|
61
|
+
"""Create ``path`` and confirm it is writable.
|
|
62
|
+
|
|
63
|
+
Returns the ``OSError`` on failure, else ``None``.
|
|
64
|
+
"""
|
|
57
65
|
try:
|
|
58
66
|
path.mkdir(parents=True, exist_ok=True)
|
|
59
67
|
except OSError as e:
|
|
60
68
|
return e
|
|
69
|
+
return _try_write(path)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def _try_write(path: Path) -> OSError | None:
|
|
73
|
+
"""Confirm ``path`` actually accepts writes; return the ``OSError``, else ``None``.
|
|
74
|
+
|
|
75
|
+
``Path.mkdir(exist_ok=True)`` reports success for a directory that already
|
|
76
|
+
exists no matter who owns it or whether the filesystem is read-only — it
|
|
77
|
+
only re-stats the path. So "mkdir worked" does not mean "we can write
|
|
78
|
+
here", and Docker deployments live entirely inside that gap: the mount
|
|
79
|
+
point always exists by the time Python runs, because the image ships it
|
|
80
|
+
and Docker creates it when mounting a volume. Without this probe a
|
|
81
|
+
root-owned volume, a ``read_only: true`` filesystem or a ``--user``
|
|
82
|
+
override would each resolve as a perfectly good data dir and the fallback
|
|
83
|
+
warning below would never fire — persistence would just vanish with no
|
|
84
|
+
startup signal, which is the failure issue #2078 reported.
|
|
85
|
+
|
|
86
|
+
Probes by creating a real file rather than calling ``os.access``.
|
|
87
|
+
``access(2)`` answers for the real UID rather than the effective one, and
|
|
88
|
+
it reports success for a process holding ``CAP_DAC_OVERRIDE`` (root in a
|
|
89
|
+
default container) whose writes a later ``--user`` drop would reject. It
|
|
90
|
+
does catch a read-only mount — Linux returns ``EROFS`` for ``W_OK`` — so
|
|
91
|
+
that is not the reason to avoid it. ``mkstemp`` is chosen because it
|
|
92
|
+
exercises the same syscalls the actual writes use (see
|
|
93
|
+
``settings_ui._persistence``), which no permission query can stand in for.
|
|
94
|
+
"""
|
|
95
|
+
try:
|
|
96
|
+
fd, name = tempfile.mkstemp(prefix=".ha-mcp-write-probe-", dir=path)
|
|
97
|
+
except OSError as e:
|
|
98
|
+
return e
|
|
99
|
+
try:
|
|
100
|
+
os.close(fd)
|
|
101
|
+
# Removing the probe is part of the check, not just cleanup: the real
|
|
102
|
+
# writers finish with ``os.replace`` onto the target name, so a share
|
|
103
|
+
# or ACL that grants create but denies unlink/replace (seen on some
|
|
104
|
+
# SMB/NFS exports) cannot actually persist anything. Letting either
|
|
105
|
+
# call raise out of here instead of returning it would abort startup
|
|
106
|
+
# rather than fall back.
|
|
107
|
+
os.unlink(name)
|
|
108
|
+
except OSError as e:
|
|
109
|
+
with contextlib.suppress(OSError):
|
|
110
|
+
os.unlink(name)
|
|
111
|
+
return e
|
|
61
112
|
return None
|
|
62
113
|
|
|
63
114
|
|
|
@@ -82,7 +133,9 @@ def _prepare_fallback(preferred: Path | None) -> Path:
|
|
|
82
133
|
)
|
|
83
134
|
else:
|
|
84
135
|
logger.warning(
|
|
85
|
-
"Cannot write ha-mcp data to %s (read-only filesystem
|
|
136
|
+
"Cannot write ha-mcp data to %s (read-only filesystem, HOME unset, "
|
|
137
|
+
"or the directory is owned by another user — a Docker volume "
|
|
138
|
+
"mounted there must be writable by the container's user). "
|
|
86
139
|
"Falling back to %s — data will NOT persist across restarts. "
|
|
87
140
|
"Set HA_MCP_CONFIG_DIR to a writable path for persistence.",
|
|
88
141
|
preferred,
|
|
@@ -104,8 +157,9 @@ def _resolve_data_dir() -> Path:
|
|
|
104
157
|
if err is None:
|
|
105
158
|
return custom_dir
|
|
106
159
|
logger.warning(
|
|
107
|
-
"HA_MCP_CONFIG_DIR=%s
|
|
108
|
-
"
|
|
160
|
+
"HA_MCP_CONFIG_DIR=%s is not usable — it must exist or be "
|
|
161
|
+
"creatable AND be writable by this process (%s: %s). It will NOT "
|
|
162
|
+
"be read from either; falling back to a tmpdir.",
|
|
109
163
|
custom_dir,
|
|
110
164
|
type(err).__name__,
|
|
111
165
|
err,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/client/supervisor_client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/client/websocket_client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/client/websocket_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/dashboard_screenshot/content.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/dashboard_screenshot/paths.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/dashboard_screenshot/provision.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/resources/skills-vendor/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_handlers_advanced.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_handlers_backups.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_handlers_fs.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_handlers_server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_handlers_theme.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_handlers_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_persistence.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_supervisor.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/_tools_meta.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/README.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/de.json
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/en.json
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/es.json
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/fr.json
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/it.json
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/ru.json
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/locales/zh-Hans.json
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/settings_ui/settings.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/stdio_settings_sidecar.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/best_practice_checker.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/component_config_reads.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/component_devices.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/component_registries.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/config_entry_flow.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/reference_validator.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_base.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_config.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_deep.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_entities.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_fetch.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_overview.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_scenes.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/smart_search/_scoring.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_blueprints.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_bug_report.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_categories.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_config_scenes.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_config_scripts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_filesystem.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_integrations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_voice_assistant.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/tools_yaml_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/tools/validation_middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/transforms/lite_docstrings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/utils/config_write_lock.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/utils/kill_signal_diagnostics.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/utils/operation_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/visibility/enforcement.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp/visibility/persistence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp_dev.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp_dev.egg-info/requires.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2173 → ha_mcp_dev-7.14.2.dev2175}/src/ha_mcp_dev.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|