ha-mcp-dev 7.5.0.dev562__tar.gz → 7.5.0.dev564__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.dev562/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.5.0.dev564}/PKG-INFO +1 -1
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/pyproject.toml +1 -1
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/__init__.py +0 -2
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/errors.py +0 -14
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_config_dashboards.py +10 -8
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_resources.py +5 -4
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/LICENSE +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/README.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/setup.cfg +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/settings_ui.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/smart_search.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_config_entry_flow.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/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.dev564"
|
|
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"
|
|
@@ -21,7 +21,6 @@ from .errors import (
|
|
|
21
21
|
create_connection_error,
|
|
22
22
|
create_entity_not_found_error,
|
|
23
23
|
create_error_response,
|
|
24
|
-
create_resource_not_found_error,
|
|
25
24
|
create_service_error,
|
|
26
25
|
create_timeout_error,
|
|
27
26
|
create_validation_error,
|
|
@@ -46,7 +45,6 @@ __all__ = [
|
|
|
46
45
|
"create_validation_error",
|
|
47
46
|
"create_config_error",
|
|
48
47
|
"create_timeout_error",
|
|
49
|
-
"create_resource_not_found_error",
|
|
50
48
|
"is_error_response",
|
|
51
49
|
"get_error_code",
|
|
52
50
|
"get_error_message",
|
|
@@ -383,20 +383,6 @@ def create_timeout_error(
|
|
|
383
383
|
)
|
|
384
384
|
|
|
385
385
|
|
|
386
|
-
def create_resource_not_found_error(
|
|
387
|
-
resource_type: str,
|
|
388
|
-
identifier: str,
|
|
389
|
-
details: str | None = None,
|
|
390
|
-
) -> dict[str, Any]:
|
|
391
|
-
"""Create a resource not found error response."""
|
|
392
|
-
return create_error_response(
|
|
393
|
-
ErrorCode.RESOURCE_NOT_FOUND,
|
|
394
|
-
f"{resource_type} '{identifier}' not found",
|
|
395
|
-
details=details,
|
|
396
|
-
context={"resource_type": resource_type, "identifier": identifier},
|
|
397
|
-
)
|
|
398
|
-
|
|
399
|
-
|
|
400
386
|
def is_error_response(response: dict[str, Any]) -> bool:
|
|
401
387
|
"""Check if a response is an error response."""
|
|
402
388
|
return response.get("success") is False and "error" in response
|
{ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
@@ -12,7 +12,7 @@ from typing import Annotated, Any, cast, overload
|
|
|
12
12
|
from fastmcp.exceptions import ToolError
|
|
13
13
|
from pydantic import Field
|
|
14
14
|
|
|
15
|
-
from ..errors import ErrorCode, create_error_response
|
|
15
|
+
from ..errors import ErrorCode, create_error_response
|
|
16
16
|
from ..utils.config_hash import compute_config_hash
|
|
17
17
|
from ..utils.python_sandbox import (
|
|
18
18
|
PythonSandboxError,
|
|
@@ -1533,13 +1533,15 @@ def register_config_dashboard_tools(mcp: Any, client: Any, **kwargs: Any) -> Non
|
|
|
1533
1533
|
resolved, _ = await _resolve_dashboard(client, url_path)
|
|
1534
1534
|
if resolved is None:
|
|
1535
1535
|
raise_tool_error(
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
url_path,
|
|
1539
|
-
details=
|
|
1540
|
-
|
|
1541
|
-
"Use ha_config_get_dashboard(list_only=True) to see available dashboards
|
|
1542
|
-
|
|
1536
|
+
create_error_response(
|
|
1537
|
+
ErrorCode.RESOURCE_NOT_FOUND,
|
|
1538
|
+
f"Dashboard '{url_path}' not found",
|
|
1539
|
+
details=f"No dashboard found with URL path or internal ID '{url_path}'.",
|
|
1540
|
+
suggestions=[
|
|
1541
|
+
"Use ha_config_get_dashboard(list_only=True) to see available dashboards",
|
|
1542
|
+
"YAML-mode and default dashboards are not deletable via this tool",
|
|
1543
|
+
],
|
|
1544
|
+
context={"action": "delete", "url_path": url_path},
|
|
1543
1545
|
)
|
|
1544
1546
|
)
|
|
1545
1547
|
resolved_id = resolved["id"]
|
|
@@ -16,7 +16,7 @@ from fastmcp.exceptions import ToolError
|
|
|
16
16
|
from fastmcp.tools import tool
|
|
17
17
|
from pydantic import Field
|
|
18
18
|
|
|
19
|
-
from ..errors import ErrorCode, create_error_response
|
|
19
|
+
from ..errors import ErrorCode, create_error_response
|
|
20
20
|
from .helpers import (
|
|
21
21
|
exception_to_structured_error,
|
|
22
22
|
log_tool_usage,
|
|
@@ -683,13 +683,14 @@ class ResourceTools:
|
|
|
683
683
|
error_str = str(error_msg).lower()
|
|
684
684
|
if "not found" in error_str or "unable to find" in error_str:
|
|
685
685
|
raise_tool_error(
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
resource_id,
|
|
686
|
+
create_error_response(
|
|
687
|
+
ErrorCode.RESOURCE_NOT_FOUND,
|
|
688
|
+
f"Dashboard resource '{resource_id}' not found",
|
|
689
689
|
details=(
|
|
690
690
|
f"Resource '{resource_id}' not found. "
|
|
691
691
|
"Use ha_config_list_dashboard_resources() to see available resources."
|
|
692
692
|
),
|
|
693
|
+
context={"action": "delete", "resource_id": resource_id},
|
|
693
694
|
)
|
|
694
695
|
)
|
|
695
696
|
|
|
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.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/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.dev562 → ha_mcp_dev-7.5.0.dev564}/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.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_config_entry_flow.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/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.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/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.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/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.dev562 → ha_mcp_dev-7.5.0.dev564}/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.dev562 → ha_mcp_dev-7.5.0.dev564}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev562 → ha_mcp_dev-7.5.0.dev564}/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
|