@@ -21,6 +21,7 @@ def execute(
2121 callback : Callable [[dict [str , Any ]], Any ],
2222 * ,
2323 session_id : str ,
24+ tool_call_id : str | None = None ,
2425 metadata : dict [str , Any ] | None = None ,
2526) -> tuple [Any , dict [str , Any ]]:
2627 """Run one tool call through Relay and return its final arguments."""
@@ -52,7 +53,7 @@ def guarded(final_args: dict[str, Any]) -> Any:
5253 raise
5354 raw_result ["value" ] = result
5455 raw_result ["json" ] = _jsonable (result )
55- return raw_result ["json" ]
56+ return runtime . relay . ToolExecutionResult ( raw_result ["json" ])
5657
5758 try :
5859 managed = _run_awaitable (
@@ -64,6 +65,7 @@ def guarded(final_args: dict[str, Any]) -> Any:
6465 invoke ,
6566 handle = parent ,
6667 metadata = _jsonable (metadata or {}),
68+ tool_call_id = tool_call_id or None ,
6769 )
6870 )
6971 except BaseException as exc :
@@ -85,11 +87,12 @@ def guarded(final_args: dict[str, Any]) -> Any:
8587 return raw_result ["value" ], observed_args
8688 raise
8789
88- if "value" in raw_result and _json_equal (managed , raw_result ["json" ]):
90+ managed_result = managed .result
91+ if "value" in raw_result and _json_equal (managed_result , raw_result ["json" ]):
8992 return raw_result ["value" ], observed_args
90- if isinstance (managed , str ):
91- return managed , observed_args
92- return json .dumps (_jsonable (managed ), ensure_ascii = False ), observed_args
93+ if isinstance (managed_result , str ):
94+ return managed_result , observed_args
95+ return json .dumps (_jsonable (managed_result ), ensure_ascii = False ), observed_args
9396
9497
9598def _jsonable (value : Any ) -> Any :
0 commit comments