ha-mcp-dev 7.5.0.dev508__tar.gz → 7.5.0.dev510__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.dev508/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.5.0.dev510}/PKG-INFO +1 -1
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/pyproject.toml +1 -1
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_addons.py +55 -6
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/LICENSE +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/README.md +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/setup.cfg +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/settings_ui.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/smart_search.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_config_entry_flow.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/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.dev510"
|
|
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"
|
|
@@ -1135,6 +1135,17 @@ def _apply_array_ops(
|
|
|
1135
1135
|
parameter=f"array_patch.operations[{index}].patches",
|
|
1136
1136
|
)
|
|
1137
1137
|
)
|
|
1138
|
+
if not patches:
|
|
1139
|
+
# `target.update({})` is a no-op; reject so the caller learns
|
|
1140
|
+
# their op was meaningless rather than seeing a silent
|
|
1141
|
+
# `summary["patched"]` entry with `"fields": []`.
|
|
1142
|
+
raise_tool_error(
|
|
1143
|
+
create_validation_error(
|
|
1144
|
+
f"array_patch patch op #{index} 'patches' cannot be empty "
|
|
1145
|
+
"(no fields to update)",
|
|
1146
|
+
parameter=f"array_patch.operations[{index}].patches",
|
|
1147
|
+
)
|
|
1148
|
+
)
|
|
1138
1149
|
target = next(
|
|
1139
1150
|
(
|
|
1140
1151
|
it
|
|
@@ -1197,6 +1208,17 @@ def _apply_array_ops(
|
|
|
1197
1208
|
)
|
|
1198
1209
|
)
|
|
1199
1210
|
new_id = new_item[id_field]
|
|
1211
|
+
if new_id is None or new_id == "":
|
|
1212
|
+
# Items missing the id field have `dict.get(id_field) == None`
|
|
1213
|
+
# by default, so allowing None/"" ids would let later patch /
|
|
1214
|
+
# delete ops match unrelated items.
|
|
1215
|
+
raise_tool_error(
|
|
1216
|
+
create_validation_error(
|
|
1217
|
+
f"array_patch add op #{index} item {id_field!r} cannot be "
|
|
1218
|
+
"None or an empty string",
|
|
1219
|
+
parameter=f"array_patch.operations[{index}].item.{id_field}",
|
|
1220
|
+
)
|
|
1221
|
+
)
|
|
1200
1222
|
if any(
|
|
1201
1223
|
isinstance(it, dict) and it.get(id_field) == new_id for it in working
|
|
1202
1224
|
):
|
|
@@ -1235,9 +1257,23 @@ def _apply_array_ops(
|
|
|
1235
1257
|
if not (isinstance(it, dict) and it.get(field) == value)
|
|
1236
1258
|
]
|
|
1237
1259
|
removed = before - len(working)
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1260
|
+
entry: dict[str, Any] = {"field": field, "value": value, "count": removed}
|
|
1261
|
+
# Distinguish "value not present" from "field name unknown to any
|
|
1262
|
+
# item" — the latter is almost always a typo and would otherwise
|
|
1263
|
+
# be a silent count=0. Only warn when there are dict items to
|
|
1264
|
+
# inspect; an empty array or all-non-dict array would `not any(...)`
|
|
1265
|
+
# trivially and produce a misleading typo suggestion.
|
|
1266
|
+
inspectable = [it for it in working if isinstance(it, dict)]
|
|
1267
|
+
if (
|
|
1268
|
+
removed == 0
|
|
1269
|
+
and inspectable
|
|
1270
|
+
and not any(field in it for it in inspectable)
|
|
1271
|
+
):
|
|
1272
|
+
entry["warning"] = (
|
|
1273
|
+
f"field {field!r} is not present on any item — "
|
|
1274
|
+
"check for a typo in the field name"
|
|
1275
|
+
)
|
|
1276
|
+
summary["deleted_where"].append(entry)
|
|
1241
1277
|
|
|
1242
1278
|
return working, summary
|
|
1243
1279
|
|
|
@@ -1830,9 +1866,9 @@ def register_addon_tools(mcp: Any, client: HomeAssistantClient, **kwargs: Any) -
|
|
|
1830
1866
|
"Proxy/array-patch mode: extra HTTP headers to send to the addon API. "
|
|
1831
1867
|
"Useful for addon-specific requirements such as Node-RED's "
|
|
1832
1868
|
"`Node-RED-Deployment-Type: full`. The proxy's internal framing "
|
|
1833
|
-
"(`X-Ingress-Path`, `X-Hass-Source`, `Content-Type`) is
|
|
1834
|
-
"top, so caller-supplied values for those keys are
|
|
1835
|
-
"Not valid in config mode."
|
|
1869
|
+
"(`X-Ingress-Path`, `X-Hass-Source`, `Cookie`, `Content-Type`) is "
|
|
1870
|
+
"layered on top, so caller-supplied values for those keys are "
|
|
1871
|
+
"overridden. Not valid in config or websocket mode."
|
|
1836
1872
|
),
|
|
1837
1873
|
default=None,
|
|
1838
1874
|
),
|
|
@@ -2049,6 +2085,19 @@ def register_addon_tools(mcp: Any, client: HomeAssistantClient, **kwargs: Any) -
|
|
|
2049
2085
|
)
|
|
2050
2086
|
)
|
|
2051
2087
|
|
|
2088
|
+
# request_headers applies only to HTTP / array_patch mode.
|
|
2089
|
+
# _call_addon_ws does not accept caller headers — reject the combo
|
|
2090
|
+
# rather than silently dropping them (matches the fail-loud-on-misroute
|
|
2091
|
+
# pattern used for message_limit / message_offset / summarize on HTTP).
|
|
2092
|
+
if request_headers is not None and websocket:
|
|
2093
|
+
raise_tool_error(
|
|
2094
|
+
create_validation_error(
|
|
2095
|
+
"request_headers applies only to HTTP and array_patch modes; "
|
|
2096
|
+
"remove it or set websocket=False",
|
|
2097
|
+
parameter="request_headers",
|
|
2098
|
+
)
|
|
2099
|
+
)
|
|
2100
|
+
|
|
2052
2101
|
# Config mode: update Supervisor settings
|
|
2053
2102
|
if config_data:
|
|
2054
2103
|
ignored_fields: list[str] = [] # populated only when options are provided
|
|
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.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/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
|
{ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/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
|
{ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_config_entry_flow.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/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.dev508 → ha_mcp_dev-7.5.0.dev510}/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.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/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.dev508 → ha_mcp_dev-7.5.0.dev510}/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.dev508 → ha_mcp_dev-7.5.0.dev510}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.5.0.dev508 → ha_mcp_dev-7.5.0.dev510}/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
|