ha-mcp-dev 7.14.2.dev2123__tar.gz → 7.14.2.dev2128__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.dev2123/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.14.2.dev2128}/PKG-INFO +1 -1
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/pyproject.toml +1 -1
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_addons.py +89 -9
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/LICENSE +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/README.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/setup.cfg +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/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.dev2128"
|
|
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
|
|
@@ -210,6 +210,19 @@ def _merge_options(base: dict, override: dict) -> dict:
|
|
|
210
210
|
return merged
|
|
211
211
|
|
|
212
212
|
|
|
213
|
+
# Supervisor's per-job-group rejection, matched case-insensitively, plus the
|
|
214
|
+
# bounded window and backoff used to ride it out. See _supervisor_api_call.
|
|
215
|
+
# The "for job group" tail is load-bearing: JobGroup.acquire raises
|
|
216
|
+
# "Another job is running for job group <name>" for the transient per-add-on
|
|
217
|
+
# collision, while the job-level JobConcurrency.REJECT path raises a bare
|
|
218
|
+
# "Another job is running" for long operations (OS update, data-disk wipe)
|
|
219
|
+
# that must NOT be retried on this schedule.
|
|
220
|
+
_JOB_COLLISION_MARKER = "another job is running for job group"
|
|
221
|
+
_JOB_COLLISION_RETRY_WINDOW = 60.0
|
|
222
|
+
_JOB_COLLISION_RETRY_INITIAL_DELAY = 1.0
|
|
223
|
+
_JOB_COLLISION_RETRY_MAX_DELAY = 5.0
|
|
224
|
+
|
|
225
|
+
|
|
213
226
|
async def _supervisor_api_call(
|
|
214
227
|
client: HomeAssistantClient,
|
|
215
228
|
endpoint: str,
|
|
@@ -228,8 +241,13 @@ async def _supervisor_api_call(
|
|
|
228
241
|
data: Optional request body data
|
|
229
242
|
timeout: Optional timeout override
|
|
230
243
|
|
|
244
|
+
A transient Supervisor job-group collision is retried with backoff, so a
|
|
245
|
+
contended add-on endpoint can block for up to
|
|
246
|
+
``_JOB_COLLISION_RETRY_WINDOW`` before returning or raising.
|
|
247
|
+
|
|
231
248
|
Returns:
|
|
232
|
-
|
|
249
|
+
``{"success": True, "result": ...}``. Every failure raises — this
|
|
250
|
+
never returns an error dict.
|
|
233
251
|
"""
|
|
234
252
|
try:
|
|
235
253
|
kwargs: dict[str, Any] = {"endpoint": endpoint, "method": method}
|
|
@@ -252,16 +270,78 @@ async def _supervisor_api_call(
|
|
|
252
270
|
# ``{"success": False, "error": ...}``; re-raise it as the same
|
|
253
271
|
# ``HomeAssistantCommandError`` the dedicated send_command used to raise
|
|
254
272
|
# so the classifier below maps schema/not-found/etc. identically.
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
273
|
+
#
|
|
274
|
+
# Supervisor serialises jobs per add-on job group and rejects a
|
|
275
|
+
# state-changing call outright while a still-settling job (a watchdog
|
|
276
|
+
# restart, a prior start/stop, a store reload) holds that group. The
|
|
277
|
+
# rejection happens before the job body runs, so nothing was applied
|
|
278
|
+
# and retrying cannot double-execute. The holder clears within seconds
|
|
279
|
+
# and the caller can do nothing useful with the failure, so ride it out
|
|
280
|
+
# inside one bounded window. The window is total rather than
|
|
281
|
+
# per-attempt, so a wedged group gives up once the window elapses
|
|
282
|
+
# instead of after some fixed retry count. Any other failure raises
|
|
283
|
+
# immediately, without retrying.
|
|
284
|
+
deadline = time.monotonic() + _JOB_COLLISION_RETRY_WINDOW
|
|
285
|
+
delay = _JOB_COLLISION_RETRY_INITIAL_DELAY
|
|
286
|
+
attempts = 0
|
|
287
|
+
while True:
|
|
288
|
+
attempts += 1
|
|
289
|
+
result = await client.send_websocket_message(
|
|
290
|
+
{"type": "supervisor/api", "_wait_timeout": wait_timeout, **kwargs}
|
|
291
|
+
)
|
|
292
|
+
|
|
293
|
+
if result.get("success"):
|
|
294
|
+
return {"success": True, "result": result.get("result", {})}
|
|
295
|
+
|
|
296
|
+
error_text = str(
|
|
297
|
+
result.get("error", f"Supervisor API call failed: {endpoint}")
|
|
298
|
+
)
|
|
299
|
+
if _JOB_COLLISION_MARKER not in error_text.lower():
|
|
300
|
+
raise HomeAssistantCommandError(error_text)
|
|
301
|
+
|
|
302
|
+
remaining = deadline - time.monotonic()
|
|
303
|
+
if remaining <= 0:
|
|
304
|
+
# A group still held after the whole window is wedged, not
|
|
305
|
+
# settling. Raise a ToolError here (the guard below re-raises
|
|
306
|
+
# it untouched) so the caller gets guidance about the stuck
|
|
307
|
+
# job instead of the generic connectivity suggestion the
|
|
308
|
+
# exception handler attaches to every other failure.
|
|
309
|
+
waited = _JOB_COLLISION_RETRY_WINDOW - remaining
|
|
310
|
+
logger.warning(
|
|
311
|
+
"Supervisor job group still busy on %s after %.0fs "
|
|
312
|
+
"(%d attempts); giving up: %s",
|
|
313
|
+
endpoint,
|
|
314
|
+
waited,
|
|
315
|
+
attempts,
|
|
316
|
+
error_text,
|
|
317
|
+
)
|
|
318
|
+
raise_tool_error(
|
|
319
|
+
create_error_response(
|
|
320
|
+
ErrorCode.SERVICE_CALL_FAILED,
|
|
321
|
+
error_text,
|
|
322
|
+
context={
|
|
323
|
+
"endpoint": endpoint,
|
|
324
|
+
"attempts": attempts,
|
|
325
|
+
"waited_seconds": round(waited, 1),
|
|
326
|
+
},
|
|
327
|
+
suggestions=[
|
|
328
|
+
"Another job has held this add-on's job group for "
|
|
329
|
+
f"over {_JOB_COLLISION_RETRY_WINDOW:.0f}s — check "
|
|
330
|
+
"Supervisor logs for a stuck or long-running job",
|
|
331
|
+
"Retry once the in-flight add-on operation "
|
|
332
|
+
"(install, update, restart or backup) finishes",
|
|
333
|
+
],
|
|
334
|
+
)
|
|
335
|
+
)
|
|
258
336
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
337
|
+
logger.info(
|
|
338
|
+
"Supervisor job-group collision on %s; retrying in %.1fs (%s)",
|
|
339
|
+
endpoint,
|
|
340
|
+
delay,
|
|
341
|
+
error_text,
|
|
262
342
|
)
|
|
263
|
-
|
|
264
|
-
|
|
343
|
+
await asyncio.sleep(min(delay, remaining))
|
|
344
|
+
delay = min(delay * 2, _JOB_COLLISION_RETRY_MAX_DELAY)
|
|
265
345
|
|
|
266
346
|
except ToolError:
|
|
267
347
|
raise
|
|
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.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/client/supervisor_client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/client/websocket_client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/client/websocket_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/dashboard_screenshot/content.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/dashboard_screenshot/paths.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/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.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/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.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_handlers_advanced.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_handlers_backups.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_handlers_fs.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_handlers_server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_handlers_theme.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_handlers_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_persistence.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_supervisor.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/_tools_meta.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/locales/README.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/locales/de.json
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/locales/en.json
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/locales/ru.json
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/locales/zh-Hans.json
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/settings_ui/settings.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/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.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/best_practice_checker.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/component_config_reads.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/component_devices.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/component_registries.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/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
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/reference_validator.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_base.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_config.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_deep.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_entities.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_fetch.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_overview.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_scenes.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/smart_search/_scoring.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_blueprints.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_bug_report.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_categories.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_config_scenes.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/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.dev2123 → ha_mcp_dev-7.14.2.dev2128}/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.dev2123 → ha_mcp_dev-7.14.2.dev2128}/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.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/tools_voice_assistant.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/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.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/tools/validation_middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/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.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/utils/config_write_lock.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/utils/kill_signal_diagnostics.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/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.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/visibility/enforcement.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp/visibility/persistence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp_dev.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp_dev.egg-info/requires.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.14.2.dev2123 → ha_mcp_dev-7.14.2.dev2128}/src/ha_mcp_dev.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|