fix: ensure tool schema always includes name field in get_definitions (#3811)

When a tool plugin registers a schema without an explicit 'name' key,
get_definitions() crashes with KeyError:

    available_tool_names = {t["function"]["name"] for t in filtered_tools}

Fix: always merge entry.name into schema so 'name' is never missing.

Refs: #3729

Co-authored-by: ekkoitac <ekko.itac@gmail.com>
This commit is contained in:
Teknium
2026-03-29 15:49:21 -07:00
committed by GitHub
parent 38d694f559
commit bf84cdfa5e

View File

@@ -115,7 +115,9 @@ class ToolRegistry:
if not quiet:
logger.debug("Tool %s unavailable (check failed)", name)
continue
result.append({"type": "function", "function": entry.schema})
# Ensure schema always has a "name" field — use entry.name as fallback
schema_with_name = {**entry.schema, "name": entry.name}
result.append({"type": "function", "function": schema_with_name})
return result
# ------------------------------------------------------------------