From fb9c4724ca132c3cf3438b771c596e7087432150 Mon Sep 17 00:00:00 2001 From: AI Christianson Date: Wed, 11 Dec 2024 23:02:24 -0500 Subject: [PATCH] ux --- ra_aid/__init__.py | 3 ++- ra_aid/__main__.py | 11 +++++------ ra_aid/console/formatting.py | 8 ++++++++ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/ra_aid/__init__.py b/ra_aid/__init__.py index 3d55d83..20dd039 100644 --- a/ra_aid/__init__.py +++ b/ra_aid/__init__.py @@ -1,5 +1,5 @@ from .__version__ import __version__ -from .console.formatting import print_stage_header, print_task_header +from .console.formatting import print_stage_header, print_task_header, print_error from .console.output import print_agent_output from .text.processing import truncate_output @@ -8,5 +8,6 @@ __all__ = [ 'print_task_header', 'print_agent_output', 'truncate_output', + 'print_error', '__version__' ] diff --git a/ra_aid/__main__.py b/ra_aid/__main__.py index f3c3a7a..9d02bf8 100644 --- a/ra_aid/__main__.py +++ b/ra_aid/__main__.py @@ -19,7 +19,7 @@ from ra_aid.tools import ( fuzzy_find_project_files, ripgrep_search, list_directory_tree ) from ra_aid.tools.memory import _global_memory, get_related_files -from ra_aid import print_agent_output, print_stage_header, print_task_header +from ra_aid import print_agent_output, print_stage_header, print_task_header, print_error from ra_aid.prompts import ( RESEARCH_PROMPT, PLANNING_PROMPT, @@ -133,7 +133,7 @@ def run_agent_with_retry(agent, prompt: str, config: dict): delay = base_delay * (2 ** attempt) # Exponential backoff error_type = e.__class__.__name__ - print(f"Encountered {error_type}: {str(e)}. Retrying in {delay} seconds... (Attempt {attempt + 1}/{max_retries})") + print_error(f"Encountered {error_type}: {str(e)}. Retrying in {delay} seconds... (Attempt {attempt + 1}/{max_retries})") time.sleep(delay) continue @@ -254,9 +254,8 @@ def validate_environment(): missing.append('aider binary not found in PATH. Please install aider: pip install aider') if missing: - print("Error: Missing required dependencies:", file=sys.stderr) - for error in missing: - print(f"- {error}", file=sys.stderr) + error_list = "\n".join(f"- {error}" for error in missing) + print_error(f"Missing required dependencies:\n\n{error_list}") sys.exit(1) @@ -269,7 +268,7 @@ def main(): # Validate message is provided if not args.message: - print("Error: --message is required", file=sys.stderr) + print_error("--message is required") sys.exit(1) base_task = args.message diff --git a/ra_aid/console/formatting.py b/ra_aid/console/formatting.py index fb11829..9482073 100644 --- a/ra_aid/console/formatting.py +++ b/ra_aid/console/formatting.py @@ -44,3 +44,11 @@ def print_task_header(task: str) -> None: task: The task text to print (supports Markdown formatting) """ console.print(Panel(Markdown(task), title="🔧 Task", border_style="yellow bold")) + +def print_error(message: str) -> None: + """Print an error message in a red-bordered panel with warning emoji. + + Args: + message: The error message to display (supports Markdown formatting) + """ + console.print(Panel(Markdown(message), title="Error", border_style="red bold"))