ha-mcp-dev 7.6.0.dev669__tar.gz → 7.6.0.dev671__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.6.0.dev669/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.6.0.dev671}/PKG-INFO +1 -1
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/pyproject.toml +1 -1
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_hacs.py +18 -1
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_service.py +7 -1
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/LICENSE +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/README.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/setup.cfg +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/settings.css +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/settings.js +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/settings_ui.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_entry_flow.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/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.6.0.
|
|
7
|
+
version = "7.6.0.dev671"
|
|
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"
|
|
@@ -704,6 +704,21 @@ HACS_REPO_BACKSTOP_POLL_INTERVAL = 5.0
|
|
|
704
704
|
# 30 s resolve budget does not apply here.
|
|
705
705
|
HACS_ADD_REGISTRATION_TIMEOUT = 10.0
|
|
706
706
|
|
|
707
|
+
# Wall-clock budget for ``_resolve_hacs_repo_id`` (the ``owner/repo`` lookup
|
|
708
|
+
# behind read-only ``ha_get_hacs_info(action="info")`` and
|
|
709
|
+
# ``ha_manage_hacs(action="download")``). Unlike ``ha_install_mcp_tools`` —
|
|
710
|
+
# which adds a repo and then waits the full ``HACS_REPO_REGISTRATION_TIMEOUT``
|
|
711
|
+
# for that fresh registration to land — a plain info/download lookup targets a
|
|
712
|
+
# repo that should ALREADY be in HACS's index: default repos always are, and
|
|
713
|
+
# ``add_repository`` blocks until registration is confirmed before returning.
|
|
714
|
+
# So the post-subscribe sample resolves an existing repo instantly, and the
|
|
715
|
+
# dispatch-signal wait only ever burns wall-clock when the repo is genuinely
|
|
716
|
+
# absent. The old 30 s budget made every not-found lookup a 30 s stall (the
|
|
717
|
+
# dominant cost in the HAOS E2E suite per #1515); 10 s still leaves event-driven
|
|
718
|
+
# headroom for the rare mid-registration race while failing a genuinely-missing
|
|
719
|
+
# lookup ~3x faster.
|
|
720
|
+
HACS_RESOLVE_REGISTRATION_TIMEOUT = 10.0
|
|
721
|
+
|
|
707
722
|
|
|
708
723
|
async def _find_repo_in_list_by_full_name(
|
|
709
724
|
ws_client: Any, full_name_lower: str
|
|
@@ -919,7 +934,9 @@ async def _resolve_hacs_repo_id(ws_client: Any, repository_id: str) -> tuple[str
|
|
|
919
934
|
if "/" not in repository_id:
|
|
920
935
|
return repository_id, repository_id
|
|
921
936
|
|
|
922
|
-
repo = await wait_for_repo_registration(
|
|
937
|
+
repo = await wait_for_repo_registration(
|
|
938
|
+
ws_client, repository_id, timeout=HACS_RESOLVE_REGISTRATION_TIMEOUT
|
|
939
|
+
)
|
|
923
940
|
|
|
924
941
|
if repo is not None:
|
|
925
942
|
return str(repo.get("id")), repo.get("name") or repository_id
|
|
@@ -93,10 +93,16 @@ _STATE_CHANGING_SERVICES = {
|
|
|
93
93
|
"media_stop",
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
# Domains where service
|
|
96
|
+
# Domains where a service call does not move the TARGET entity's own primary
|
|
97
|
+
# state to a value the verifier can wait for. ``scene`` belongs here with
|
|
98
|
+
# ``automation``/``script``: activating a scene changes the member entities,
|
|
99
|
+
# but the scene entity's own state is a last-activated timestamp that never
|
|
100
|
+
# becomes "on"/"off" — so waiting for ``turn_on`` -> "on" always times out and
|
|
101
|
+
# only appends a spurious "could not be verified" warning (~10s wasted).
|
|
97
102
|
_NON_STATE_CHANGING_DOMAINS = {
|
|
98
103
|
"automation",
|
|
99
104
|
"script",
|
|
105
|
+
"scene",
|
|
100
106
|
"homeassistant",
|
|
101
107
|
"notify",
|
|
102
108
|
"tts",
|
|
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.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/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
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/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.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/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
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_config.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_entities.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_overview.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_scenes.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/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.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_entry_flow.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_scripts.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/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
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/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.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/validation_middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/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.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/kill_signal_diagnostics.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/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
|