ha-mcp-dev 7.13.0.dev1992__tar.gz → 7.13.0.dev1997__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.13.0.dev1992/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.13.0.dev1997}/PKG-INFO +1 -1
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/pyproject.toml +1 -1
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_dev.py +39 -11
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_labels.py +82 -16
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/LICENSE +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/README.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/setup.cfg +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/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.13.0.
|
|
7
|
+
version = "7.13.0.dev1997"
|
|
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
|
|
@@ -834,7 +834,9 @@ class DevTools:
|
|
|
834
834
|
Field(
|
|
835
835
|
description=(
|
|
836
836
|
"info: deployment/version report; update_source: point the "
|
|
837
|
-
"in-process server at a
|
|
837
|
+
"ha_mcp_tools component's separate in-process server at a "
|
|
838
|
+
"channel or pip spec and reinstall it (never changes the "
|
|
839
|
+
"server serving this connection, unless embedded); "
|
|
838
840
|
"restart: restart this server"
|
|
839
841
|
)
|
|
840
842
|
),
|
|
@@ -871,14 +873,21 @@ class DevTools:
|
|
|
871
873
|
as a PR tarball, and restarting the server so config or code
|
|
872
874
|
changes take effect.
|
|
873
875
|
|
|
874
|
-
Caveats:
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
876
|
+
Caveats: update_source changes ONLY the ha_mcp_tools custom
|
|
877
|
+
component's separate in-process server entry — it never updates
|
|
878
|
+
the add-on, Docker, standalone, or PyPI server that may be
|
|
879
|
+
serving this connection (update those via ha_manage_addon /
|
|
880
|
+
docker pull / pip). In embedded mode that entry IS this server,
|
|
881
|
+
so the update self-interrupts; elsewhere this connection is
|
|
882
|
+
untouched and keeps its current version. Success means the
|
|
883
|
+
entry's options were applied — the component then reinstalls in
|
|
884
|
+
the background, which can take minutes and can still fail
|
|
885
|
+
(check HA logs). update_source requires the component's
|
|
886
|
+
in-process server entry to exist. restart interrupts this MCP
|
|
887
|
+
connection in embedded and add-on deployments (the reply
|
|
888
|
+
arrives just before the server goes down) and supports those
|
|
889
|
+
two deployments only (standalone processes must be restarted
|
|
890
|
+
externally).
|
|
882
891
|
|
|
883
892
|
EXAMPLES:
|
|
884
893
|
ha_dev_manage_server("info")
|
|
@@ -936,6 +945,17 @@ class DevTools:
|
|
|
936
945
|
"entry_id": entry_id,
|
|
937
946
|
"channel": options.get(_OPT_CHANNEL),
|
|
938
947
|
"pip_spec": options.get(_OPT_PIP_SPEC),
|
|
948
|
+
"role": (
|
|
949
|
+
"this server (embedded)"
|
|
950
|
+
if mode == "embedded"
|
|
951
|
+
else (
|
|
952
|
+
"separate in-process server run by the "
|
|
953
|
+
"ha_mcp_tools component; the update_source "
|
|
954
|
+
"target. server_version above describes the "
|
|
955
|
+
f"{mode} server handling this connection, not "
|
|
956
|
+
"this entry."
|
|
957
|
+
)
|
|
958
|
+
),
|
|
939
959
|
}
|
|
940
960
|
except Exception as exc:
|
|
941
961
|
# Best-effort probe: a failure here (including the ToolError the
|
|
@@ -1020,6 +1040,9 @@ class DevTools:
|
|
|
1020
1040
|
"data": {
|
|
1021
1041
|
"scheduled": True,
|
|
1022
1042
|
"entry_id": entry_id,
|
|
1043
|
+
"target": (
|
|
1044
|
+
"this server (the embedded ha_mcp_tools in-process entry)"
|
|
1045
|
+
),
|
|
1023
1046
|
"applying": user_input,
|
|
1024
1047
|
"previous": {
|
|
1025
1048
|
_OPT_CHANNEL: current.get(_OPT_CHANNEL),
|
|
@@ -1047,14 +1070,19 @@ class DevTools:
|
|
|
1047
1070
|
"success": True,
|
|
1048
1071
|
"data": {
|
|
1049
1072
|
"entry_id": entry_id,
|
|
1073
|
+
"target": "ha_mcp_tools in-process server entry",
|
|
1050
1074
|
"applied": user_input,
|
|
1051
1075
|
"previous": {
|
|
1052
1076
|
_OPT_CHANNEL: current.get(_OPT_CHANNEL),
|
|
1053
1077
|
_OPT_PIP_SPEC: current.get(_OPT_PIP_SPEC),
|
|
1054
1078
|
},
|
|
1055
1079
|
"note": (
|
|
1056
|
-
"
|
|
1057
|
-
"
|
|
1080
|
+
"Applied to the ha_mcp_tools component's SEPARATE "
|
|
1081
|
+
"in-process server entry, which is now reinstalling in "
|
|
1082
|
+
"the background (can take minutes and can still fail — "
|
|
1083
|
+
"check HA logs). The server handling this connection is "
|
|
1084
|
+
"NOT affected and keeps its current version; verify the "
|
|
1085
|
+
"in-process server on its own connect URL, not here."
|
|
1058
1086
|
),
|
|
1059
1087
|
},
|
|
1060
1088
|
}
|
|
@@ -31,6 +31,73 @@ class LabelTools:
|
|
|
31
31
|
def __init__(self, client: Any) -> None:
|
|
32
32
|
self._client = client
|
|
33
33
|
|
|
34
|
+
async def _list_labels(
|
|
35
|
+
self, context: dict[str, Any] | None = None
|
|
36
|
+
) -> list[dict[str, Any]]:
|
|
37
|
+
"""Return all labels from the registry (shared by get/set).
|
|
38
|
+
|
|
39
|
+
Raises ToolError (SERVICE_CALL_FAILED) if the list call fails or returns
|
|
40
|
+
an unexpected non-list envelope — a degraded response must not collapse
|
|
41
|
+
to an empty registry, or callers would confidently report a real label
|
|
42
|
+
as missing (mirrors ``backup_manager._require_list``).
|
|
43
|
+
"""
|
|
44
|
+
result = await self._client.send_websocket_message(
|
|
45
|
+
{"type": "config/label_registry/list"}
|
|
46
|
+
)
|
|
47
|
+
if not result.get("success"):
|
|
48
|
+
raise_tool_error(
|
|
49
|
+
create_error_response(
|
|
50
|
+
ErrorCode.SERVICE_CALL_FAILED,
|
|
51
|
+
result.get("error", "Failed to get labels"),
|
|
52
|
+
context=context,
|
|
53
|
+
)
|
|
54
|
+
)
|
|
55
|
+
# No ``[]`` default: a success envelope that omits ``result`` (or sends
|
|
56
|
+
# a non-list) is a degraded response, not an empty registry — defaulting
|
|
57
|
+
# would let callers confidently report a real label as missing.
|
|
58
|
+
labels = result.get("result")
|
|
59
|
+
if not isinstance(labels, list):
|
|
60
|
+
raise_tool_error(
|
|
61
|
+
create_error_response(
|
|
62
|
+
ErrorCode.SERVICE_CALL_FAILED,
|
|
63
|
+
"Label registry returned a missing or non-list result",
|
|
64
|
+
context=context,
|
|
65
|
+
)
|
|
66
|
+
)
|
|
67
|
+
return labels
|
|
68
|
+
|
|
69
|
+
async def _require_existing_label(self, label_id: str, name: str) -> None:
|
|
70
|
+
"""Raise RESOURCE_NOT_FOUND if ``label_id`` is not in the registry.
|
|
71
|
+
|
|
72
|
+
Enforces the strict update-only contract (issue #1860): update of an
|
|
73
|
+
unknown id yields an opaque "Unknown error", and create cannot honor a
|
|
74
|
+
caller-supplied id (HA derives it from the name), so an unknown id is a
|
|
75
|
+
clear error with a create hint rather than a silently divergent upsert.
|
|
76
|
+
"""
|
|
77
|
+
existing = await self._list_labels(context={"name": name, "label_id": label_id})
|
|
78
|
+
if any(lbl.get("label_id") == label_id for lbl in existing):
|
|
79
|
+
return
|
|
80
|
+
raise_tool_error(
|
|
81
|
+
create_error_response(
|
|
82
|
+
ErrorCode.RESOURCE_NOT_FOUND,
|
|
83
|
+
f"Label not found: {label_id}",
|
|
84
|
+
context={
|
|
85
|
+
"name": name,
|
|
86
|
+
"label_id": label_id,
|
|
87
|
+
"available_label_ids": [
|
|
88
|
+
lbl.get("label_id") for lbl in existing[:10]
|
|
89
|
+
],
|
|
90
|
+
},
|
|
91
|
+
suggestions=[
|
|
92
|
+
"To create a new label, omit label_id — Home Assistant "
|
|
93
|
+
+ "derives the id from the name (e.g. 'vendor:tapo' becomes "
|
|
94
|
+
+ "'vendor_tapo')",
|
|
95
|
+
"To update an existing label, pass its exact current "
|
|
96
|
+
+ "label_id (list all with ha_config_get_label())",
|
|
97
|
+
],
|
|
98
|
+
)
|
|
99
|
+
)
|
|
100
|
+
|
|
34
101
|
@tool(
|
|
35
102
|
name="ha_config_get_label",
|
|
36
103
|
tags={"Labels & Categories"},
|
|
@@ -82,22 +149,7 @@ class LabelTools:
|
|
|
82
149
|
],
|
|
83
150
|
context={"action": "get"},
|
|
84
151
|
)
|
|
85
|
-
|
|
86
|
-
"type": "config/label_registry/list",
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
result = await self._client.send_websocket_message(message)
|
|
90
|
-
|
|
91
|
-
if not result.get("success"):
|
|
92
|
-
raise_tool_error(
|
|
93
|
-
create_error_response(
|
|
94
|
-
ErrorCode.SERVICE_CALL_FAILED,
|
|
95
|
-
result.get("error", "Failed to get labels"),
|
|
96
|
-
context={"label_id": label_id},
|
|
97
|
-
)
|
|
98
|
-
)
|
|
99
|
-
|
|
100
|
-
labels = result.get("result", [])
|
|
152
|
+
labels = await self._list_labels(context={"label_id": label_id})
|
|
101
153
|
|
|
102
154
|
if label_id is None:
|
|
103
155
|
return {
|
|
@@ -223,6 +275,13 @@ class LabelTools:
|
|
|
223
275
|
],
|
|
224
276
|
context={"action": "set", "name": name},
|
|
225
277
|
)
|
|
278
|
+
# Strict update-only contract (issue #1860): routing to
|
|
279
|
+
# label_registry/update with an unknown id returns an opaque
|
|
280
|
+
# "Unknown error", and label_registry/create cannot honor a
|
|
281
|
+
# caller-supplied id (HA derives it from the name). Verify the
|
|
282
|
+
# id exists up front and return actionable guidance instead of
|
|
283
|
+
# dispatching an update that fails cryptically.
|
|
284
|
+
await self._require_existing_label(label_id, name)
|
|
226
285
|
action = "update" if label_id else "create"
|
|
227
286
|
|
|
228
287
|
message: dict[str, Any] = {
|
|
@@ -254,6 +313,13 @@ class LabelTools:
|
|
|
254
313
|
"message": f"Successfully {action_past} label: {name}",
|
|
255
314
|
}
|
|
256
315
|
else:
|
|
316
|
+
# The unknown-id case is caught up front by
|
|
317
|
+
# _require_existing_label. This substring match only catches HA
|
|
318
|
+
# error texts containing "not found"/"doesn't exist"; HA's label
|
|
319
|
+
# update does NOT emit those for an unknown/deleted id (it
|
|
320
|
+
# surfaces "Unknown error"), so it is a best-effort guard for
|
|
321
|
+
# other/future phrasings only — the check-then-update delete race
|
|
322
|
+
# is not handled here and still surfaces as SERVICE_CALL_FAILED.
|
|
257
323
|
error_str = str(result.get("error", "")).lower()
|
|
258
324
|
if "not found" in error_str or "doesn't exist" in error_str:
|
|
259
325
|
raise_tool_error(
|
|
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.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/client/supervisor_client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/client/websocket_client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/client/websocket_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/dashboard_screenshot/content.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/dashboard_screenshot/paths.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/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.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/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.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_handlers_advanced.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_handlers_backups.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_handlers_fs.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_handlers_server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_handlers_theme.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_handlers_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_persistence.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_supervisor.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/_tools_meta.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/locales/README.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/locales/de.json
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/locales/en.json
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/locales/ru.json
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/settings_ui/settings.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/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.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/best_practice_checker.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/component_config_reads.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/component_devices.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/component_registries.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/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.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/reference_validator.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/_base.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/_config.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/_deep.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/_entities.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/_fetch.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/_overview.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/smart_search/_scenes.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/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.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_blueprints.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_bug_report.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_categories.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_config_scenes.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_config_scripts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_filesystem.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/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
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/tools_voice_assistant.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/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.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/tools/validation_middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/transforms/lite_docstrings.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
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/utils/kill_signal_diagnostics.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/utils/operation_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp/visibility/persistence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp_dev.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp_dev.egg-info/requires.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.13.0.dev1992 → ha_mcp_dev-7.13.0.dev1997}/src/ha_mcp_dev.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|