@@ -714,6 +714,7 @@ def __init__(
714714 json_output = getattr (_output_config , 'json_output' , False )
715715 status_trace = getattr (_output_config , 'status_trace' , False ) # New: clean inline status
716716 simple_output = getattr (_output_config , 'simple_output' , False ) # status preset: no timestamps
717+ editor_output = getattr (_output_config , 'editor_output' , False ) # Editor: Step N display
717718 output_file = getattr (_output_config , 'output_file' , None ) # Auto-save to file
718719 output_template = getattr (_output_config , 'template' , None ) # Response template
719720 else :
@@ -723,10 +724,20 @@ def __init__(
723724 json_output = False
724725 status_trace = False
725726 simple_output = False
727+ editor_output = False
726728
727- # Enable trace output mode if configured (takes priority)
729+ # Enable editor output mode if configured (beginner-friendly, takes priority)
730+ # Shows: Step 1: 📄 Creating file: path → ✓ Done
731+ if editor_output :
732+ try :
733+ from ..output .editor import enable_editor_output , is_editor_output_enabled
734+ if not is_editor_output_enabled ():
735+ enable_editor_output (use_color = True )
736+ except ImportError :
737+ pass # Editor module not available
738+ # Enable trace output mode if configured
728739 # This provides timestamped inline status with duration
729- if status_trace :
740+ elif status_trace :
730741 try :
731742 from ..output .trace import enable_trace_output , is_trace_output_enabled
732743 if not is_trace_output_enabled ():
@@ -4712,6 +4723,9 @@ def _execute_tool_impl(self, function_name, arguments):
47124723 error_msg = f"Tool execution denied: { decision .reason } "
47134724 logging .warning (error_msg )
47144725 return {"error" : error_msg , "approval_denied" : True }
4726+ # Bridge: mark tool as approved in global registry context so
4727+ # @require_approval decorator wrappers skip their own check.
4728+ get_approval_registry ().mark_approved (function_name )
47154729 if decision .modified_args :
47164730 arguments = decision .modified_args
47174731 logging .info (f"Using modified arguments: { arguments } " )
@@ -7667,6 +7681,10 @@ async def execute_tool_async(self, function_name: str, arguments: Dict[str, Any]
76677681 error_msg = f"Tool execution denied: { decision .reason } "
76687682 logging .warning (error_msg )
76697683 return {"error" : error_msg , "approval_denied" : True }
7684+ # Bridge: mark tool as approved in global registry context so
7685+ # @require_approval decorator wrappers skip their own check.
7686+ from ..approval import get_approval_registry as _get_reg
7687+ _get_reg ().mark_approved (function_name )
76707688 if decision .modified_args :
76717689 arguments = decision .modified_args
76727690 logging .info (f"Using modified arguments: { arguments } " )
0 commit comments