@@ -24,6 +24,10 @@ function ToolApprovalEntry({
2424 onReject : ( ) => void ;
2525 decision : 'approved' | 'rejected' | undefined ;
2626} ) {
27+ if ( approval . rawItem ?. type !== 'function_call' ) {
28+ return null ;
29+ }
30+
2731 return (
2832 < div key = { approval . rawItem ?. id } className = "flex flex-col gap-2" >
2933 < h3 className = "font-medium text-sm" >
@@ -78,23 +82,25 @@ export function Approvals({
7882 } , [ approvals ] ) ;
7983
8084 function handleApprove ( approval : Item ) {
81- if ( approval . rawItem ?. id ) {
82- setDecisions ( ( prev ) => {
83- const newDecisions = new Map ( prev ) ;
84- newDecisions . set ( approval . rawItem ?. callId ?? '' , 'approved' ) ;
85- return newDecisions ;
86- } ) ;
87- }
85+ setDecisions ( ( prev ) => {
86+ if ( approval . rawItem ?. type !== 'function_call' ) {
87+ return prev ;
88+ }
89+ const newDecisions = new Map ( prev ) ;
90+ newDecisions . set ( approval . rawItem ?. callId ?? '' , 'approved' ) ;
91+ return newDecisions ;
92+ } ) ;
8893 }
8994
9095 function handleReject ( approval : Item ) {
91- if ( approval . rawItem ?. id ) {
92- setDecisions ( ( prev ) => {
93- const newDecisions = new Map ( prev ) ;
94- newDecisions . set ( approval . rawItem ?. callId ?? '' , 'rejected' ) ;
95- return newDecisions ;
96- } ) ;
97- }
96+ setDecisions ( ( prev ) => {
97+ if ( approval . rawItem ?. type !== 'function_call' ) {
98+ return prev ;
99+ }
100+ const newDecisions = new Map ( prev ) ;
101+ newDecisions . set ( approval . rawItem ?. callId ?? '' , 'rejected' ) ;
102+ return newDecisions ;
103+ } ) ;
98104 }
99105
100106 function handleDone ( ) {
@@ -119,21 +125,17 @@ export function Approvals({
119125 </ DialogDescription >
120126 </ DialogHeader >
121127 < div className = "grid gap-8" >
122- { approvals
123- . filter (
124- ( item ) =>
125- item . type === 'tool_approval_item' &&
126- item . rawItem ?. type === 'function_call' ,
127- )
128- . map ( ( approval ) => (
128+ { approvals . map ( ( approval ) =>
129+ approval . rawItem ?. type === 'function_call' ? (
129130 < ToolApprovalEntry
130131 key = { approval . rawItem ?. callId }
131132 approval = { approval }
132133 decision = { decisions . get ( approval . rawItem ?. callId ?? '' ) }
133134 onApprove = { ( ) => handleApprove ( approval ) }
134135 onReject = { ( ) => handleReject ( approval ) }
135136 />
136- ) ) }
137+ ) : null ,
138+ ) }
137139 </ div >
138140 < DialogFooter >
139141 < Button
0 commit comments