Skip to content

Commit 7a47902

Browse files
kingpanther13claude
andcommitted
fix: derive entity_id for helpers when not in WebSocket result
Some helper types (e.g., input_boolean) don't return entity_id in the WebSocket create result. Derive it from helper_type + result id so that wait_for_entity_registered and category application work. Test updated to handle the same fallback. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent c2fb25f commit 7a47902

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

src/ha_mcp/tools/tools_config_helpers.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -639,6 +639,9 @@ async def ha_config_set_helper(
639639
if result.get("success"):
640640
helper_data = result.get("result", {})
641641
entity_id = helper_data.get("entity_id")
642+
# Some helper types don't return entity_id — derive from result id
643+
if not entity_id and helper_data.get("id"):
644+
entity_id = f"{helper_type}.{helper_data['id']}"
642645

643646
# Wait for entity to be properly registered before proceeding
644647
wait_bool = coerce_bool_param(wait, "wait", default=True)

tests/src/e2e/workflows/categories/test_config_tool_categories.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,12 +366,16 @@ async def test_helper_set_category(self, mcp_client, cleanup_tracker):
366366
},
367367
)
368368
helper_data = assert_mcp_success(helper_result, "Create helper with category")
369+
# entity_id may be None for some helper types — derive from helper_data.id
369370
entity_id = helper_data.get("entity_id")
370-
assert entity_id, f"Missing entity_id: {helper_data}"
371+
inner_data = helper_data.get("helper_data", {})
372+
helper_id = inner_data.get("id")
373+
if not entity_id and helper_id:
374+
entity_id = f"input_boolean.{helper_id}"
375+
assert entity_id, f"Missing entity_id and helper_data.id: {helper_data}"
371376
cleanup_tracker.track("input_boolean", entity_id)
372377

373378
# Check category was applied (in helper_data sub-dict)
374-
inner_data = helper_data.get("helper_data", {})
375379
assert inner_data.get("category") == category_id, (
376380
f"Category not set in helper response: {helper_data}"
377381
)

0 commit comments

Comments
 (0)