ha-mcp-dev 7.2.0.dev367__tar.gz → 7.2.0.dev368__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.2.0.dev367/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.2.0.dev368}/PKG-INFO +1 -1
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/pyproject.toml +1 -1
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_history.py +10 -3
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/LICENSE +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/README.md +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/setup.cfg +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/smart_search.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_config_entry_flow.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/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.2.0.
|
|
7
|
+
version = "7.2.0.dev368"
|
|
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"
|
|
@@ -591,7 +591,7 @@ async def _fetch_statistics(
|
|
|
591
591
|
|
|
592
592
|
# Parse statistic_types
|
|
593
593
|
stat_types_list: list[str] | None = None
|
|
594
|
-
if statistic_types:
|
|
594
|
+
if statistic_types is not None:
|
|
595
595
|
if isinstance(statistic_types, str):
|
|
596
596
|
if statistic_types.startswith("["):
|
|
597
597
|
stat_types_list = parse_string_list_param(statistic_types, "statistic_types")
|
|
@@ -603,8 +603,15 @@ async def _fetch_statistics(
|
|
|
603
603
|
stat_types_list = list(statistic_types)
|
|
604
604
|
|
|
605
605
|
valid_types = ["mean", "min", "max", "sum", "state", "change"]
|
|
606
|
-
|
|
607
|
-
|
|
606
|
+
assert stat_types_list is not None
|
|
607
|
+
if not stat_types_list:
|
|
608
|
+
raise_tool_error(create_error_response(
|
|
609
|
+
ErrorCode.VALIDATION_INVALID_PARAMETER,
|
|
610
|
+
"statistic_types cannot be an empty list. "
|
|
611
|
+
"Omit the parameter to retrieve all types, or specify at least one valid type.",
|
|
612
|
+
context={"parameter": "statistic_types", "value": statistic_types},
|
|
613
|
+
suggestions=[f"Use one or more of: {', '.join(valid_types)}"],
|
|
614
|
+
))
|
|
608
615
|
invalid_types = [t for t in stat_types_list if t not in valid_types]
|
|
609
616
|
if invalid_types:
|
|
610
617
|
raise_tool_error(create_error_response(
|
|
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.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/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
|
{ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/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
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_config_entry_flow.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/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
|
{ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp/tools/tools_voice_assistant.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/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
|
|
File without changes
|
{ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.2.0.dev367 → ha_mcp_dev-7.2.0.dev368}/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
|