From f89ea89ffb1feff081a8b7725947b160079481fc Mon Sep 17 00:00:00 2001 From: "xzq.xu" Date: Thu, 26 Mar 2026 13:58:10 +0800 Subject: [PATCH] fix: use resolved tool_obj for fallback tool execution When the LLM returns a short tool name that doesn't match the deduped key in tool_map, the fallback scan correctly resolves tool_obj via schema.name. However the execution branch still checked `tool_name not in tool_map` and passed `tool_map[tool_name]`, so fallback-resolved tools were never executed. Change the condition to check `tool_obj is None` and pass `tool_obj` directly to _execute_tool_call. Closes #15 Made-with: Cursor --- openspace/llm/client.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openspace/llm/client.py b/openspace/llm/client.py index cc14c64..ded3ab8 100644 --- a/openspace/llm/client.py +++ b/openspace/llm/client.py @@ -754,7 +754,7 @@ class LLMClient: except: pass - if tool_name not in tool_map: + if tool_obj is None: result = ToolResult( status=ToolStatus.ERROR, error=f"Tool '{tool_name}' not found" @@ -762,7 +762,7 @@ class LLMClient: else: try: result = await _execute_tool_call( - tool=tool_map[tool_name], + tool=tool_obj, openai_tool_call={ "id": tool_call.id, "type": "function",