1+ import { markToolRejected } from "../task/toolExecutionContext"
12import { serializeError } from "serialize-error"
23import { Anthropic } from "@anthropic-ai/sdk"
34
@@ -401,6 +402,7 @@ async function presentAssistantMessageBlock(cline: Task): Promise<void> {
401402 askApproval,
402403 handleError,
403404 pushToolResult,
405+ toolCallId : toolCallId ?? "" ,
404406 onValidated : mcpBlock . partial
405407 ? undefined
406408 : ( ) => {
@@ -576,6 +578,10 @@ async function presentAssistantMessageBlock(cline: Task): Promise<void> {
576578 }
577579 }
578580
581+ if ( ! cline . activeToolContexts . has ( toolCallId ) ) {
582+ cline . activeToolContexts . set ( toolCallId , { toolCallId, didReject : false } )
583+ }
584+
579585 // Store approval feedback to merge into tool result (GitHub #10465)
580586 let approvalFeedback : { text : string ; images ?: string [ ] } | undefined
581587
@@ -679,7 +685,7 @@ async function presentAssistantMessageBlock(cline: Task): Promise<void> {
679685 } else {
680686 pushToolResult ( formatResponse . toolDenied ( ) )
681687 }
682- cline . didRejectTool = true
688+ markToolRejected ( cline , toolCallId )
683689 return false
684690 }
685691
@@ -866,13 +872,15 @@ async function presentAssistantMessageBlock(cline: Task): Promise<void> {
866872 askApproval,
867873 handleError,
868874 pushToolResult,
875+ toolCallId,
869876 } )
870877 break
871878 case "update_todo_list" :
872879 await updateTodoListTool . handle ( cline , block as ToolUse < "update_todo_list" > , {
873880 askApproval,
874881 handleError,
875882 pushToolResult,
883+ toolCallId,
876884 } )
877885 break
878886 case "apply_diff" :
@@ -881,6 +889,7 @@ async function presentAssistantMessageBlock(cline: Task): Promise<void> {
881889 askApproval,
882890 handleError,
883891 pushToolResult,
892+ toolCallId,
884893 } )
885894 break
886895 case "edit" :
@@ -890,6 +899,7 @@ async function presentAssistantMessageBlock(cline: Task): Promise<void> {
890899 askApproval,
891900 handleError,
892901 pushToolResult,
902+ toolCallId,
893903 } )
894904 break
895905 case "search_replace" :
@@ -898,6 +908,7 @@ async function presentAssistantMessageBlock(cline: Task): Promise<void> {
898908 askApproval,
899909 handleError,
900910 pushToolResult,
911+ toolCallId,
901912 } )
902913 break
903914 case "edit_file" :
@@ -906,6 +917,7 @@ async function presentAssistantMessageBlock(cline: Task): Promise<void> {
906917 askApproval,
907918 handleError,
908919 pushToolResult,
920+ toolCallId,
909921 } )
910922 break
911923 case "apply_patch" :
@@ -914,6 +926,7 @@ async function presentAssistantMessageBlock(cline: Task): Promise<void> {
914926 askApproval,
915927 handleError,
916928 pushToolResult,
929+ toolCallId,
917930 } )
918931 break
919932 case "read_file" :
@@ -922,69 +935,79 @@ async function presentAssistantMessageBlock(cline: Task): Promise<void> {
922935 askApproval,
923936 handleError,
924937 pushToolResult,
938+ toolCallId,
925939 } )
926940 break
927941 case "list_files" :
928942 await listFilesTool . handle ( cline , block as ToolUse < "list_files" > , {
929943 askApproval,
930944 handleError,
931945 pushToolResult,
946+ toolCallId,
932947 } )
933948 break
934949 case "codebase_search" :
935950 await codebaseSearchTool . handle ( cline , block as ToolUse < "codebase_search" > , {
936951 askApproval,
937952 handleError,
938953 pushToolResult,
954+ toolCallId,
939955 } )
940956 break
941957 case "search_files" :
942958 await searchFilesTool . handle ( cline , block as ToolUse < "search_files" > , {
943959 askApproval,
944960 handleError,
945961 pushToolResult,
962+ toolCallId,
946963 } )
947964 break
948965 case "execute_command" :
949966 await executeCommandTool . handle ( cline , block as ToolUse < "execute_command" > , {
950967 askApproval,
951968 handleError,
952969 pushToolResult,
970+ toolCallId,
953971 } )
954972 break
955973 case "read_command_output" :
956974 await readCommandOutputTool . handle ( cline , block as ToolUse < "read_command_output" > , {
957975 askApproval,
958976 handleError,
959977 pushToolResult,
978+ toolCallId,
960979 } )
961980 break
962981 case "use_mcp_tool" :
963982 await useMcpToolTool . handle ( cline , block as ToolUse < "use_mcp_tool" > , {
964983 askApproval,
965984 handleError,
966985 pushToolResult,
986+ toolCallId,
967987 } )
968988 break
969989 case "access_mcp_resource" :
970990 await accessMcpResourceTool . handle ( cline , block as ToolUse < "access_mcp_resource" > , {
971991 askApproval,
972992 handleError,
973993 pushToolResult,
994+ toolCallId,
974995 } )
975996 break
976997 case "ask_followup_question" :
977998 await askFollowupQuestionTool . handle ( cline , block as ToolUse < "ask_followup_question" > , {
978999 askApproval,
9791000 handleError,
9801001 pushToolResult,
1002+ toolCallId,
9811003 } )
9821004 break
9831005 case "switch_mode" :
9841006 await switchModeTool . handle ( cline , block as ToolUse < "switch_mode" > , {
9851007 askApproval,
9861008 handleError,
9871009 pushToolResult,
1010+ toolCallId,
9881011 } )
9891012 break
9901013 case "new_task" :
@@ -993,7 +1016,7 @@ async function presentAssistantMessageBlock(cline: Task): Promise<void> {
9931016 askApproval,
9941017 handleError,
9951018 pushToolResult,
996- toolCallId : block . id ,
1019+ toolCallId,
9971020 } )
9981021 break
9991022 case "attempt_completion" : {
@@ -1003,7 +1026,7 @@ async function presentAssistantMessageBlock(cline: Task): Promise<void> {
10031026 pushToolResult,
10041027 askFinishSubTaskApproval,
10051028 toolDescription,
1006- toolCallId : block . id ,
1029+ toolCallId,
10071030 }
10081031 await attemptCompletionTool . handle (
10091032 cline ,
@@ -1017,13 +1040,15 @@ async function presentAssistantMessageBlock(cline: Task): Promise<void> {
10171040 askApproval,
10181041 handleError,
10191042 pushToolResult,
1043+ toolCallId,
10201044 } )
10211045 break
10221046 case "skill" :
10231047 await skillTool . handle ( cline , block as ToolUse < "skill" > , {
10241048 askApproval,
10251049 handleError,
10261050 pushToolResult,
1051+ toolCallId,
10271052 } )
10281053 break
10291054 case "generate_image" :
@@ -1032,6 +1057,7 @@ async function presentAssistantMessageBlock(cline: Task): Promise<void> {
10321057 askApproval,
10331058 handleError,
10341059 pushToolResult,
1060+ toolCallId,
10351061 } )
10361062 break
10371063 default : {
0 commit comments