ha-mcp-dev 7.1.0.dev292__tar.gz → 7.1.0.dev294__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.1.0.dev292/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.1.0.dev294}/PKG-INFO +1 -1
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/pyproject.toml +1 -1
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/smart_search.py +20 -6
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/LICENSE +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/README.md +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/setup.cfg +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/card_types.json +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/dashboard_guide.md +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_config_entry_flow.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_config_info.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/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.1.0.
|
|
7
|
+
version = "7.1.0.dev294"
|
|
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"
|
|
@@ -4,6 +4,7 @@ Smart search tools for Home Assistant MCP server.
|
|
|
4
4
|
|
|
5
5
|
import asyncio
|
|
6
6
|
import logging
|
|
7
|
+
import random
|
|
7
8
|
import time
|
|
8
9
|
from typing import Any
|
|
9
10
|
|
|
@@ -387,9 +388,20 @@ class SmartSearchTools:
|
|
|
387
388
|
return_exceptions=True,
|
|
388
389
|
)
|
|
389
390
|
|
|
390
|
-
#
|
|
391
|
-
|
|
392
|
-
|
|
391
|
+
# Entities are mandatory — surface connection/auth errors immediately.
|
|
392
|
+
# Services failure is logged at warning (affects total count and service catalog).
|
|
393
|
+
# Registry failures are logged at debug (area enrichment only).
|
|
394
|
+
if isinstance(results[0], Exception):
|
|
395
|
+
raise results[0]
|
|
396
|
+
|
|
397
|
+
entities = results[0]
|
|
398
|
+
partial_warnings: list[str] = []
|
|
399
|
+
if isinstance(results[1], Exception):
|
|
400
|
+
logger.warning(f"Could not fetch services: {results[1]}")
|
|
401
|
+
partial_warnings.append(f"Services unavailable: {results[1]}")
|
|
402
|
+
services = []
|
|
403
|
+
else:
|
|
404
|
+
services = results[1]
|
|
393
405
|
|
|
394
406
|
# Handle area registry result
|
|
395
407
|
area_registry: list[dict[str, Any]] = []
|
|
@@ -537,8 +549,6 @@ class SmartSearchTools:
|
|
|
537
549
|
}
|
|
538
550
|
|
|
539
551
|
# Prepare domain stats with entity filtering and truncation info
|
|
540
|
-
import random
|
|
541
|
-
|
|
542
552
|
formatted_domain_stats = {}
|
|
543
553
|
for domain, stats in sorted_domains:
|
|
544
554
|
all_entities = stats["all_entities"]
|
|
@@ -569,7 +579,7 @@ class SmartSearchTools:
|
|
|
569
579
|
}
|
|
570
580
|
|
|
571
581
|
# Build base response
|
|
572
|
-
base_response = {
|
|
582
|
+
base_response: dict[str, Any] = {
|
|
573
583
|
"success": True,
|
|
574
584
|
"system_summary": {
|
|
575
585
|
"total_entities": len(entities),
|
|
@@ -582,6 +592,10 @@ class SmartSearchTools:
|
|
|
582
592
|
"ai_insights": ai_insights,
|
|
583
593
|
}
|
|
584
594
|
|
|
595
|
+
if partial_warnings:
|
|
596
|
+
base_response["partial"] = True
|
|
597
|
+
base_response["warnings"] = partial_warnings
|
|
598
|
+
|
|
585
599
|
# Add level-specific fields
|
|
586
600
|
if detail_level == "full":
|
|
587
601
|
# Full: Add device types and service catalog
|
|
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
|
|
File without changes
|
{ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/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
|
{ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_config_entry_flow.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/tools/tools_config_scripts.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.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/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.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp/transforms/categorized_search.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.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.1.0.dev292 → ha_mcp_dev-7.1.0.dev294}/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
|