ha-mcp-dev 7.5.0.dev560__tar.gz → 7.5.0.dev561__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.5.0.dev560/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.5.0.dev561}/PKG-INFO +1 -1
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/pyproject.toml +1 -1
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/client/rest_client.py +21 -9
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/LICENSE +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/README.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/setup.cfg +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/settings_ui.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/smart_search.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_config_entry_flow.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/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.5.0.
|
|
7
|
+
version = "7.5.0.dev561"
|
|
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"
|
|
@@ -782,6 +782,9 @@ class HomeAssistantClient:
|
|
|
782
782
|
else:
|
|
783
783
|
return False, "Invalid response from Home Assistant"
|
|
784
784
|
except Exception as e:
|
|
785
|
+
# Intentional broad-catch: is_connected() contract maps any failure
|
|
786
|
+
# to (False, error_msg); styleguide § "broad except at top-level
|
|
787
|
+
# setup/teardown handlers" applies (connection probe is the analog).
|
|
785
788
|
logger.error(f"Failed to connect to Home Assistant: {e}")
|
|
786
789
|
return False, str(e)
|
|
787
790
|
|
|
@@ -823,7 +826,7 @@ class HomeAssistantClient:
|
|
|
823
826
|
f"Converted entity_id {identifier} to unique_id {unique_id}"
|
|
824
827
|
)
|
|
825
828
|
return str(unique_id)
|
|
826
|
-
except
|
|
829
|
+
except HomeAssistantError as e:
|
|
827
830
|
raise HomeAssistantAPIError(
|
|
828
831
|
f"Failed to resolve automation {identifier}: {str(e)}",
|
|
829
832
|
status_code=404,
|
|
@@ -853,8 +856,8 @@ class HomeAssistantClient:
|
|
|
853
856
|
"GET", f"/config/automation/config/{unique_id}"
|
|
854
857
|
)
|
|
855
858
|
return response
|
|
856
|
-
except
|
|
857
|
-
if
|
|
859
|
+
except HomeAssistantAPIError as e:
|
|
860
|
+
if e.status_code == 404:
|
|
858
861
|
raise HomeAssistantAPIError(
|
|
859
862
|
f"Automation not found: {identifier} (unique_id: {unique_id})",
|
|
860
863
|
status_code=404,
|
|
@@ -915,18 +918,22 @@ class HomeAssistantClient:
|
|
|
915
918
|
if entity_not_verified:
|
|
916
919
|
result["entity_not_verified"] = True
|
|
917
920
|
return result
|
|
918
|
-
except
|
|
919
|
-
if
|
|
921
|
+
except HomeAssistantAPIError as e:
|
|
922
|
+
if e.status_code == 400:
|
|
920
923
|
raise HomeAssistantAPIError(
|
|
921
924
|
f"Invalid automation configuration: {str(e)}", status_code=400
|
|
922
925
|
) from e
|
|
923
926
|
raise
|
|
924
927
|
|
|
928
|
+
# 3-attempt × 6s upper-bound budget; first poll 0.1s catches the
|
|
929
|
+
# typical sub-1s entity-publish window.
|
|
930
|
+
_POLL_CADENCE: tuple[float, ...] = (0.1, 1.0, 4.9)
|
|
931
|
+
|
|
925
932
|
async def _poll_for_automation_entity(self, unique_id: str) -> str | None:
|
|
926
933
|
"""Poll HA state to find the entity_id assigned to a newly created automation."""
|
|
927
934
|
try:
|
|
928
|
-
for
|
|
929
|
-
await asyncio.sleep(
|
|
935
|
+
for sleep_time in self._POLL_CADENCE:
|
|
936
|
+
await asyncio.sleep(sleep_time)
|
|
930
937
|
states = await self.get_states()
|
|
931
938
|
for state in states:
|
|
932
939
|
if not state.get("entity_id", "").startswith("automation."):
|
|
@@ -937,9 +944,14 @@ class HomeAssistantClient:
|
|
|
937
944
|
f"Found actual entity_id for unique_id {unique_id}: {entity_id}"
|
|
938
945
|
)
|
|
939
946
|
return entity_id
|
|
940
|
-
except
|
|
947
|
+
except HomeAssistantError as e:
|
|
948
|
+
# Narrow catch: programming bugs (TypeError/KeyError/etc.) propagate.
|
|
949
|
+
# Mirrors test-side _POLLING_TRANSIENT_ERRORS in
|
|
950
|
+
# tests/src/e2e/utilities/wait_helpers.py and styleguide §
|
|
951
|
+
# "Exception Handling in Test Polling Loops".
|
|
941
952
|
logger.warning(
|
|
942
|
-
f"Failed to query actual entity_id for unique_id {unique_id}: {e}"
|
|
953
|
+
f"Failed to query actual entity_id for unique_id {unique_id}: {e}",
|
|
954
|
+
exc_info=True,
|
|
943
955
|
)
|
|
944
956
|
return None
|
|
945
957
|
|
|
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.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/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.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/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
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_config_entry_flow.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/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
|
|
File without changes
|
{ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/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.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/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.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/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.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev560 → ha_mcp_dev-7.5.0.dev561}/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
|