ha-mcp-dev 7.7.0.dev682__tar.gz → 7.7.0.dev683__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.7.0.dev682/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.7.0.dev683}/PKG-INFO +1 -1
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/pyproject.toml +1 -1
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/smart_search/_deep.py +1 -1
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_config_helpers.py +12 -12
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_integrations.py +1 -1
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp_dev.egg-info/SOURCES.txt +1 -1
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/LICENSE +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/README.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/setup.cfg +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/settings.css +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/settings.js +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/settings_ui.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- /ha_mcp_dev-7.7.0.dev682/src/ha_mcp/tools/tools_config_entry_flow.py → /ha_mcp_dev-7.7.0.dev683/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/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.7.0.
|
|
7
|
+
version = "7.7.0.dev683"
|
|
8
8
|
description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13,<3.14"
|
|
@@ -9,9 +9,9 @@ from fastmcp import Context
|
|
|
9
9
|
from fastmcp.exceptions import ToolError
|
|
10
10
|
|
|
11
11
|
from ...client.rest_client import HomeAssistantAPIError
|
|
12
|
+
from ..config_entry_flow import FLOW_HELPER_TYPES
|
|
12
13
|
from ..helpers import exception_to_structured_error, safe_info, safe_progress
|
|
13
14
|
from ..tools_config_dashboards import fetch_dashboards_list
|
|
14
|
-
from ..tools_config_entry_flow import FLOW_HELPER_TYPES
|
|
15
15
|
from ..tools_integrations import fetch_entry_options_with_status
|
|
16
16
|
from ._config import (
|
|
17
17
|
AUTOMATION_CONFIG_TIME_BUDGET,
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
@@ -19,14 +19,7 @@ from pydantic import AliasChoices, Field
|
|
|
19
19
|
from ..client.rest_client import HomeAssistantAPIError
|
|
20
20
|
from ..errors import ErrorCode, create_error_response
|
|
21
21
|
from .auto_backup import with_auto_backup
|
|
22
|
-
from .
|
|
23
|
-
exception_to_structured_error,
|
|
24
|
-
log_tool_usage,
|
|
25
|
-
raise_tool_error,
|
|
26
|
-
register_tool_methods,
|
|
27
|
-
validate_identifier_not_empty,
|
|
28
|
-
)
|
|
29
|
-
from .tools_config_entry_flow import (
|
|
22
|
+
from .config_entry_flow import (
|
|
30
23
|
FLOW_HELPER_TYPES,
|
|
31
24
|
create_flow_helper,
|
|
32
25
|
fetch_helper_flow_info,
|
|
@@ -34,6 +27,13 @@ from .tools_config_entry_flow import (
|
|
|
34
27
|
set_config_subentry,
|
|
35
28
|
update_flow_helper,
|
|
36
29
|
)
|
|
30
|
+
from .helpers import (
|
|
31
|
+
exception_to_structured_error,
|
|
32
|
+
log_tool_usage,
|
|
33
|
+
raise_tool_error,
|
|
34
|
+
register_tool_methods,
|
|
35
|
+
validate_identifier_not_empty,
|
|
36
|
+
)
|
|
37
37
|
from .util_helpers import (
|
|
38
38
|
apply_entity_category,
|
|
39
39
|
attach_skill_content,
|
|
@@ -573,7 +573,7 @@ def get_simple_helper_schema(helper_type: str) -> list[_HelperFieldSpec] | None:
|
|
|
573
573
|
Callers attach the result to validation-error context as ``data_schema``
|
|
574
574
|
so the LLM sees field shape inline with a 4xx response, matching the
|
|
575
575
|
auto-attach pattern already in use for flow helpers (see
|
|
576
|
-
``fetch_helper_flow_info`` in ``
|
|
576
|
+
``fetch_helper_flow_info`` in ``config_entry_flow``).
|
|
577
577
|
Returns ``None`` for any helper_type not in ``SIMPLE_HELPER_SCHEMAS``,
|
|
578
578
|
so callers can write a single uniform ``if schema is not None: …`` branch.
|
|
579
579
|
"""
|
|
@@ -611,7 +611,7 @@ def _simple_helper_error_context(
|
|
|
611
611
|
_MENU_ROOTED_FLOW_HELPER_TYPES: frozenset[str] = frozenset({"template", "group"})
|
|
612
612
|
|
|
613
613
|
# Keys callers may pass inside ``config`` to select a menu branch — mirrors
|
|
614
|
-
# ``_MENU_SELECTION_KEYS`` in ``
|
|
614
|
+
# ``_MENU_SELECTION_KEYS`` in ``config_entry_flow.py`` (kept in parallel
|
|
615
615
|
# rather than imported to avoid widening that module's surface).
|
|
616
616
|
_MENU_CHOICE_CONFIG_KEYS: tuple[str, ...] = (
|
|
617
617
|
"group_type",
|
|
@@ -627,7 +627,7 @@ def _extract_menu_choice_from_config(
|
|
|
627
627
|
|
|
628
628
|
Returns the value of the first ``_MENU_CHOICE_CONFIG_KEYS`` key found in
|
|
629
629
|
``config_dict`` if it's a non-empty string, else ``None``. Mirrors
|
|
630
|
-
``_handle_menu_step`` in ``
|
|
630
|
+
``_handle_menu_step`` in ``config_entry_flow`` — without this,
|
|
631
631
|
``_flow_helper_error_context`` falls back to ``menu_choice=None`` and
|
|
632
632
|
silently omits ``data_schema`` for menu-rooted types
|
|
633
633
|
(``template``/``group`` — the most common ones).
|
|
@@ -669,7 +669,7 @@ async def _flow_helper_error_context(
|
|
|
669
669
|
)
|
|
670
670
|
except Exception as e:
|
|
671
671
|
# Mirror the breadcrumb in ``abort_config_flow``'s own swallow
|
|
672
|
-
# (
|
|
672
|
+
# (config_entry_flow), so a fetch failure here doesn't
|
|
673
673
|
# disappear silently — this PR raises the call rate by 5 sites
|
|
674
674
|
# and the swallow needs an audit-trail entry.
|
|
675
675
|
logger.debug(
|
|
@@ -20,6 +20,7 @@ from ..client.rest_client import (
|
|
|
20
20
|
)
|
|
21
21
|
from ..errors import ErrorCode, create_error_response
|
|
22
22
|
from .auto_backup import with_auto_backup
|
|
23
|
+
from .config_entry_flow import FLOW_HELPER_TYPES
|
|
23
24
|
from .helpers import (
|
|
24
25
|
exception_to_structured_error,
|
|
25
26
|
log_tool_usage,
|
|
@@ -27,7 +28,6 @@ from .helpers import (
|
|
|
27
28
|
register_tool_methods,
|
|
28
29
|
validate_identifier_not_empty,
|
|
29
30
|
)
|
|
30
|
-
from .tools_config_entry_flow import FLOW_HELPER_TYPES
|
|
31
31
|
from .tools_config_helpers import (
|
|
32
32
|
SIMPLE_HELPER_TYPES,
|
|
33
33
|
_get_entities_for_config_entry,
|
|
@@ -62,6 +62,7 @@ src/ha_mcp/tools/__init__.py
|
|
|
62
62
|
src/ha_mcp/tools/auto_backup.py
|
|
63
63
|
src/ha_mcp/tools/backup.py
|
|
64
64
|
src/ha_mcp/tools/best_practice_checker.py
|
|
65
|
+
src/ha_mcp/tools/config_entry_flow.py
|
|
65
66
|
src/ha_mcp/tools/device_control.py
|
|
66
67
|
src/ha_mcp/tools/enhanced.py
|
|
67
68
|
src/ha_mcp/tools/helpers.py
|
|
@@ -77,7 +78,6 @@ src/ha_mcp/tools/tools_categories.py
|
|
|
77
78
|
src/ha_mcp/tools/tools_code.py
|
|
78
79
|
src/ha_mcp/tools/tools_config_automations.py
|
|
79
80
|
src/ha_mcp/tools/tools_config_dashboards.py
|
|
80
|
-
src/ha_mcp/tools/tools_config_entry_flow.py
|
|
81
81
|
src/ha_mcp/tools/tools_config_helpers.py
|
|
82
82
|
src/ha_mcp/tools/tools_config_scenes.py
|
|
83
83
|
src/ha_mcp/tools/tools_config_scripts.py
|
|
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.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/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
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/best_practice_checker.py
RENAMED
|
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.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/smart_search/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/smart_search/_config.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/smart_search/_entities.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/smart_search/_overview.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/smart_search/_scenes.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/smart_search/_scoring.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.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_config_scripts.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_dashboard_screenshot.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.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/tools_voice_assistant.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/tools/validation_middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/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
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp/utils/kill_signal_diagnostics.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.7.0.dev682 → ha_mcp_dev-7.7.0.dev683}/src/ha_mcp_dev.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|