ha-mcp-dev 7.6.0.dev613__tar.gz → 7.6.0.dev615__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.dev613/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.6.0.dev615}/PKG-INFO +1 -1
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/pyproject.toml +1 -1
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_config_automations.py +1 -1
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_config_dashboards.py +1 -2
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_config_helpers.py +2 -2
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_config_scenes.py +1 -1
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_config_scripts.py +1 -1
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_filesystem.py +22 -3
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/LICENSE +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/README.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/setup.cfg +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/settings_ui.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/smart_search.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_config_entry_flow.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/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.dev615"
|
|
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"
|
{ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
@@ -401,7 +401,7 @@ class AutomationConfigTools:
|
|
|
401
401
|
async def ha_config_set_automation(
|
|
402
402
|
self,
|
|
403
403
|
config: Annotated[
|
|
404
|
-
|
|
404
|
+
dict[str, Any] | None,
|
|
405
405
|
Field(
|
|
406
406
|
description="Complete automation configuration with required fields: 'alias', 'trigger', 'action'. "
|
|
407
407
|
"Optional: 'description', 'condition', 'mode', 'max', 'initial_state', 'variables'. "
|
{ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
@@ -847,10 +847,9 @@ def register_config_dashboard_tools(mcp: Any, client: Any, **kwargs: Any) -> Non
|
|
|
847
847
|
),
|
|
848
848
|
],
|
|
849
849
|
config: Annotated[
|
|
850
|
-
|
|
850
|
+
dict[str, Any] | None,
|
|
851
851
|
Field(
|
|
852
852
|
description="Dashboard configuration with views and cards. "
|
|
853
|
-
"Can be dict or JSON string. "
|
|
854
853
|
"Omit or set to None to create dashboard without initial config. "
|
|
855
854
|
"Mutually exclusive with python_transform."
|
|
856
855
|
),
|
{ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
@@ -2297,7 +2297,7 @@ def register_config_helper_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
2297
2297
|
),
|
|
2298
2298
|
] = None,
|
|
2299
2299
|
config: Annotated[
|
|
2300
|
-
str
|
|
2300
|
+
dict[str, Any] | None,
|
|
2301
2301
|
Field(
|
|
2302
2302
|
description=(
|
|
2303
2303
|
"Config dict for flow-based helper types and "
|
|
@@ -2305,7 +2305,7 @@ def register_config_helper_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
2305
2305
|
"(template, group, utility_meter, derivative, min_max, threshold, "
|
|
2306
2306
|
"integration, statistics, trend, random, filter, tod, "
|
|
2307
2307
|
"generic_thermostat, switch_as_x, generic_hygrostat). "
|
|
2308
|
-
"
|
|
2308
|
+
"Ignored for simple helper types. "
|
|
2309
2309
|
"Field set is delivered as data_schema on the first validation error."
|
|
2310
2310
|
),
|
|
2311
2311
|
default=None,
|
|
@@ -424,7 +424,7 @@ class ConfigSceneTools:
|
|
|
424
424
|
str, Field(description="Scene identifier (e.g., 'movie_night')")
|
|
425
425
|
],
|
|
426
426
|
config: Annotated[
|
|
427
|
-
|
|
427
|
+
dict[str, Any] | None,
|
|
428
428
|
Field(
|
|
429
429
|
description=(
|
|
430
430
|
"Scene configuration dictionary. Must include 'entities' "
|
{ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_config_scripts.py
RENAMED
|
@@ -383,7 +383,7 @@ class ConfigScriptTools:
|
|
|
383
383
|
),
|
|
384
384
|
],
|
|
385
385
|
config: Annotated[
|
|
386
|
-
|
|
386
|
+
dict[str, Any] | None,
|
|
387
387
|
Field(
|
|
388
388
|
description="Script configuration dictionary. Must include EITHER 'sequence' (for regular scripts) OR 'use_blueprint' (for blueprint-based scripts). "
|
|
389
389
|
"Optional fields: 'alias', 'description', 'icon', 'mode', 'max', 'fields'. "
|
|
@@ -63,8 +63,9 @@ def _version_tuple(version: str) -> tuple[int, ...]:
|
|
|
63
63
|
segment to ``0`` would not actually achieve the "fail closed"
|
|
64
64
|
intent: a malformed high-order segment like ``"1.x.0"`` would
|
|
65
65
|
still parse to ``(1, 0, 0)`` and pass a ``>= (0, 5, 1)`` gate.
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
The caller surfaces the ValueError as a distinct "malformed version"
|
|
67
|
+
error (reinstall / file-issue remediation), separate from the
|
|
68
|
+
"too old" update prompt.
|
|
68
69
|
"""
|
|
69
70
|
return tuple(int(segment) for segment in version.split("."))
|
|
70
71
|
|
|
@@ -175,7 +176,25 @@ async def _fetch_caller_token(client: Any) -> str:
|
|
|
175
176
|
try:
|
|
176
177
|
parsed = _version_tuple(version)
|
|
177
178
|
except ValueError:
|
|
178
|
-
|
|
179
|
+
# A malformed version (non-numeric segment like "1.x.0", or a
|
|
180
|
+
# future suffixed/date scheme _version_tuple can't parse) is a
|
|
181
|
+
# different failure mode from "too old": a HACS update won't help
|
|
182
|
+
# if the reported version itself is wrong. Point at reinstall /
|
|
183
|
+
# issue-filing instead of the version-bump remediation.
|
|
184
|
+
raise_tool_error(
|
|
185
|
+
create_error_response(
|
|
186
|
+
ErrorCode.COMPONENT_NOT_INSTALLED,
|
|
187
|
+
"The installed ha_mcp_tools custom component reports a "
|
|
188
|
+
f"malformed version: {version!r}, so ha-mcp can't verify it "
|
|
189
|
+
f"meets the required >= {MIN_COMPONENT_VERSION}.",
|
|
190
|
+
suggestions=[
|
|
191
|
+
"Reinstall ha_mcp_tools via HACS",
|
|
192
|
+
"Restart Home Assistant after reinstalling",
|
|
193
|
+
"If the version is still malformed, file an issue at "
|
|
194
|
+
"https://github.com/homeassistant-ai/ha-mcp/issues",
|
|
195
|
+
],
|
|
196
|
+
)
|
|
197
|
+
)
|
|
179
198
|
if parsed < _version_tuple(MIN_COMPONENT_VERSION):
|
|
180
199
|
_raise_component_too_old(f"reported version is {version}")
|
|
181
200
|
_CALLER_TOKEN_CACHE[client] = token
|
|
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
|
|
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.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/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
|
{ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/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.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/tools/tools_config_entry_flow.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.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/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.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/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.dev613 → ha_mcp_dev-7.6.0.dev615}/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.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev613 → ha_mcp_dev-7.6.0.dev615}/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
|