@@ -338,16 +338,6 @@ def message_to_agentscope_msg(
338338 A single Msg object or a list of Msg objects.
339339 """
340340
341- def _try_loads (v , default , keep_original = False ):
342- if isinstance (v , (dict , list )):
343- return v
344- if isinstance (v , str ) and v .strip ():
345- try :
346- return json .loads (v )
347- except Exception :
348- return v if keep_original else default
349- return default
350-
351341 def _convert_one (message : Message ) -> Msg :
352342 # Normalize role
353343 if message .role == "tool" :
@@ -375,23 +365,12 @@ def _convert_one(message: Message) -> Msg:
375365 MessageType .FUNCTION_CALL ,
376366 ):
377367 # convert PLUGIN_CALL, FUNCTION_CALL to ToolUseBlock
378- tool_args = None
379- for cnt in reversed (message .content ):
380- if hasattr (cnt , "data" ):
381- v = cnt .data .get ("arguments" )
382- if isinstance (v , (dict , list )) or (
383- isinstance (v , str ) and v .strip ()
384- ):
385- tool_args = _try_loads (v , {}, keep_original = False )
386- break
387- if tool_args is None :
388- tool_args = {}
389368 result ["content" ] = [
390369 ToolUseBlock (
391370 type = "tool_use" ,
392371 id = message .content [0 ].data ["call_id" ],
393372 name = message .content [0 ].data .get ("name" ),
394- input = tool_args ,
373+ input = json . loads ( message . content [ 0 ]. data [ "arguments" ]) ,
395374 ),
396375 ]
397376 elif message .type in (
@@ -400,18 +379,7 @@ def _convert_one(message: Message) -> Msg:
400379 ):
401380 # convert PLUGIN_CALL_OUTPUT, FUNCTION_CALL_OUTPUT to
402381 # ToolResultBlock
403- out = None
404- for cnt in reversed (message .content ):
405- if hasattr (cnt , "data" ):
406- v = cnt .data .get ("output" )
407- if isinstance (v , (dict , list )) or (
408- isinstance (v , str ) and v .strip ()
409- ):
410- out = _try_loads (v , "" , keep_original = True )
411- break
412- if out is None :
413- out = ""
414- blk = out
382+ blk = json .loads (message .content [0 ].data ["output" ])
415383
416384 def is_valid_block (obj ):
417385 return any (
@@ -421,12 +389,12 @@ def is_valid_block(obj):
421389
422390 if isinstance (blk , list ):
423391 if not all (is_valid_block (item ) for item in blk ):
424- blk = out
392+ blk = message . content [ 0 ]. data [ "output" ]
425393 elif isinstance (blk , dict ):
426394 if not is_valid_block (blk ):
427- blk = out
395+ blk = message . content [ 0 ]. data [ "output" ]
428396 else :
429- blk = out
397+ blk = message . content [ 0 ]. data [ "output" ]
430398
431399 result ["content" ] = [
432400 ToolResultBlock (
0 commit comments