@@ -317,47 +317,34 @@ async def _execute_tool_and_respond(
317317 ) -> None :
318318 """Execute a tool handler and send the result back via HandlePendingToolCall RPC."""
319319 try :
320- invocation : ToolInvocation = {
321- " session_id" : self .session_id ,
322- " tool_call_id" : tool_call_id ,
323- " tool_name" : tool_name ,
324- " arguments" : arguments ,
325- }
320+ invocation = ToolInvocation (
321+ session_id = self .session_id ,
322+ tool_call_id = tool_call_id ,
323+ tool_name = tool_name ,
324+ arguments = arguments ,
325+ )
326326
327327 result = handler (invocation )
328328 if inspect .isawaitable (result ):
329329 result = await result
330330
331331 if result is None :
332332 result = ToolResult (
333- textResultForLlm = "Tool returned no result." ,
334- resultType = "failure" ,
333+ text_result_for_llm = "Tool returned no result." ,
334+ result_type = "failure" ,
335335 error = "tool returned no result" ,
336- toolTelemetry = {},
336+ tool_telemetry = {},
337337 )
338338
339- # Build a structured ResultResult from the ToolResult
340- text_result = ""
341- error_str = None
342- result_type = None
343- tool_telemetry = None
344-
345- if isinstance (result , dict ):
346- text_result = result .get ("textResultForLlm" , str (result ))
347- error_str = result .get ("error" )
348- result_type = result .get ("resultType" )
349- tool_telemetry = result .get ("toolTelemetry" )
350- else :
351- text_result = str (result )
352339
353340 await self .rpc .tools .handle_pending_tool_call (
354341 SessionToolsHandlePendingToolCallParams (
355342 request_id = request_id ,
356343 result = ResultResult (
357- text_result_for_llm = text_result ,
358- error = error_str ,
359- result_type = result_type ,
360- tool_telemetry = tool_telemetry ,
344+ text_result_for_llm = result . text_result_for_llm ,
345+ error = result . error ,
346+ result_type = result . result_type ,
347+ tool_telemetry = result . tool_telemetry ,
361348 ),
362349 )
363350 )
@@ -380,36 +367,18 @@ async def _execute_permission_and_respond(
380367 ) -> None :
381368 """Execute a permission handler and respond via RPC."""
382369 try :
383- # Convert from generated PermissionRequest to dict for the handler
384- if hasattr (permission_request , "to_dict" ):
385- perm_dict = permission_request .to_dict ()
386- elif isinstance (permission_request , dict ):
387- perm_dict = permission_request
388- else :
389- perm_dict = permission_request
390-
391- result = handler (perm_dict , {"session_id" : self .session_id })
370+ result = handler (permission_request , {"session_id" : self .session_id })
392371 if inspect .isawaitable (result ):
393372 result = await result
394373
395374 result = cast (PermissionRequestResult , result )
396- default_kind = "denied-no-approval-rule-and-could-not-request-from-user"
397- if isinstance (result , dict ):
398- kind_str = result .get ("kind" , default_kind )
399- else :
400- kind_str = getattr (result , "kind" , default_kind )
401-
402- def _get (key : str ) -> Any :
403- if isinstance (result , dict ):
404- return result .get (key )
405- return getattr (result , key , None )
406375
407376 perm_result = SessionPermissionsHandlePendingPermissionRequestParamsResult (
408- kind = Kind (kind_str ),
409- rules = _get ( " rules" ) ,
410- feedback = _get ( " feedback" ) ,
411- message = _get ( " message" ) ,
412- path = _get ( " path" ) ,
377+ kind = Kind (result . kind ),
378+ rules = result . rules ,
379+ feedback = result . feedback ,
380+ message = result . message ,
381+ path = result . path ,
413382 )
414383
415384 await self .rpc .permissions .handle_pending_permission_request (
@@ -509,7 +478,7 @@ async def _handle_permission_request(
509478
510479 if not handler :
511480 # No handler registered, deny permission
512- return { "kind" : "denied-no-approval-rule-and-could-not-request-from-user" }
481+ return PermissionRequestResult ()
513482
514483 try :
515484 result = handler (request , {"session_id" : self .session_id })
@@ -518,7 +487,7 @@ async def _handle_permission_request(
518487 return cast (PermissionRequestResult , result )
519488 except Exception : # pylint: disable=broad-except
520489 # Handler failed, deny permission
521- return { "kind" : "denied-no-approval-rule-and-could-not-request-from-user" }
490+ return PermissionRequestResult ()
522491
523492 def _register_user_input_handler (self , handler : UserInputHandler | None ) -> None :
524493 """
0 commit comments