@@ -466,11 +466,20 @@ export function createPermissionGate(options: PermissionGateOptions): Permission
466466 ...( turnId !== null && turnId . length > 0 ? { parentId : turnId } : { } ) ,
467467 tags : { tool_id : request . tool } ,
468468 } ) ;
469- const outcome = await requestApproval ( requestForOperator ) ;
470- end ( waitSpanId , { decision : outcome . allow ? "allow" : "deny" } ) ;
471- if ( ! outcome . allow ) {
469+ let outcome : ApprovalOutcome | undefined ;
470+ try {
471+ outcome = await requestApproval ( requestForOperator ) ;
472+ } finally {
473+ end (
474+ waitSpanId ,
475+ outcome !== undefined
476+ ? { decision : outcome . allow ? "allow" : "deny" }
477+ : undefined ,
478+ ) ;
479+ }
480+ if ( outcome === undefined || ! outcome . allow ) {
472481 const suffix =
473- outcome . message !== undefined && outcome . message . length > 0
482+ outcome ? .message !== undefined && outcome . message . length > 0
474483 ? ` — ${ outcome . message } `
475484 : "" ;
476485 return {
@@ -509,13 +518,26 @@ export function createPermissionGate(options: PermissionGateOptions): Permission
509518 ...( turnId !== null && turnId . length > 0 ? { parentId : turnId } : { } ) ,
510519 tags : { tool_id : request . tool } ,
511520 } ) ;
512- const outcome = await requestApproval ( request ) ;
513- end ( waitSpanId , { decision : outcome . allow ? "allow" : "deny" } ) ;
514- if ( ! outcome . allow ) {
515- const suffix = outcome . message !== undefined && outcome . message . length > 0
516- ? ` — ${ outcome . message } `
517- : "" ;
518- return { allowed : false , reason : `Operator declined: ${ request . action } (${ request . subject } )${ suffix } ` } ;
521+ let outcome : ApprovalOutcome | undefined ;
522+ try {
523+ outcome = await requestApproval ( request ) ;
524+ } finally {
525+ end (
526+ waitSpanId ,
527+ outcome !== undefined
528+ ? { decision : outcome . allow ? "allow" : "deny" }
529+ : undefined ,
530+ ) ;
531+ }
532+ if ( outcome === undefined || ! outcome . allow ) {
533+ const suffix =
534+ outcome ?. message !== undefined && outcome . message . length > 0
535+ ? ` — ${ outcome . message } `
536+ : "" ;
537+ return {
538+ allowed : false ,
539+ reason : `Operator declined: ${ request . action } (${ request . subject } )${ suffix } ` ,
540+ } ;
519541 }
520542 mintGrant ( request . tool , outcome ) ;
521543 }
0 commit comments