Skip to content

Commit db79f74

Browse files
jsonbaileyclaude
andcommitted
fix: log warnings when skipping malformed tool entries
Re-adds entry-level warnings that were removed when inlining the parsing logic. Users setting incorrect defaults would otherwise get silent drops with no indication of why tools were missing. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 7ce3db4 commit db79f74

1 file changed

Lines changed: 16 additions & 9 deletions

File tree

packages/sdk/server-ai/src/ldai/client.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ def _resolve_tools(variation: Dict[str, Any]) -> Optional[Dict[str, LDTool]]:
6868
parameters=tool_dict.get('parameters'),
6969
custom_parameters=tool_dict.get('customParameters'),
7070
)
71+
else:
72+
log.warning('Skipping tool "%s": expected a dict, got %s', tool_name, type(tool_dict).__name__)
7173
return tools or None
7274

7375
model = variation.get('model')
@@ -82,15 +84,20 @@ def _resolve_tools(variation: Dict[str, Any]) -> Optional[Dict[str, LDTool]]:
8284

8385
tools = {}
8486
for item in tools_list:
85-
if isinstance(item, dict) and item.get('name'):
86-
tool_name = str(item['name'])
87-
tools[tool_name] = LDTool(
88-
name=tool_name,
89-
description=item.get('description'),
90-
type=item.get('type'),
91-
parameters=item.get('parameters'),
92-
custom_parameters=item.get('customParameters'),
93-
)
87+
if not isinstance(item, dict):
88+
log.warning('Skipping tool entry: expected a dict, got %s', type(item).__name__)
89+
continue
90+
if not item.get('name'):
91+
log.warning('Skipping tool entry: missing name')
92+
continue
93+
tool_name = str(item['name'])
94+
tools[tool_name] = LDTool(
95+
name=tool_name,
96+
description=item.get('description'),
97+
type=item.get('type'),
98+
parameters=item.get('parameters'),
99+
custom_parameters=item.get('customParameters'),
100+
)
94101
return tools or None
95102

96103

0 commit comments

Comments
 (0)