diff --git a/CHANGELOG.md b/CHANGELOG.md index 458265b..36af79e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,12 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [0.10.3] - 1024-12-27 - Fix logging on interrupt. - Fix web research prompt. - Simplify planning stage by executing tasks directly. - Make research notes available to more agents/tools. +- Make read_file always output status panel. ## [0.10.2] - 2024-12-26 diff --git a/ra_aid/__version__.py b/ra_aid/__version__.py index d299689..58c6b5f 100644 --- a/ra_aid/__version__.py +++ b/ra_aid/__version__.py @@ -1,3 +1,3 @@ """Version information.""" -__version__ = "0.10.1" +__version__ = "0.10.3" diff --git a/ra_aid/tools/read_file.py b/ra_aid/tools/read_file.py index e515cee..420e87e 100644 --- a/ra_aid/tools/read_file.py +++ b/ra_aid/tools/read_file.py @@ -15,22 +15,13 @@ CHUNK_SIZE = 8192 @tool def read_file_tool( filepath: str, - verbose: bool = True, encoding: str = 'utf-8' ) -> Dict[str, str]: """Read and return the contents of a text file. Args: filepath: Path to the file to read - verbose: Whether to display a Rich panel with read statistics (default: True) encoding: File encoding to use (default: utf-8) - - Returns: - Dict containing: - - content: The file contents as a string (truncated if needed) - - Raises: - RuntimeError: If file cannot be read or does not exist """ start_time = time.time() try: @@ -60,12 +51,11 @@ def read_file_tool( logging.debug(f"File read complete: {total_bytes} bytes in {elapsed:.2f}s") logging.debug(f"Pre-truncation stats: {total_bytes} bytes, {line_count} lines") - if verbose: - console.print(Panel( - f"Read {line_count} lines ({total_bytes} bytes) from {filepath} in {elapsed:.2f}s", - title="📄 File Read", - border_style="bright_blue" - )) + console.print(Panel( + f"Read {line_count} lines ({total_bytes} bytes) from {filepath} in {elapsed:.2f}s", + title="📄 File Read", + border_style="bright_blue" + )) # Truncate if needed truncated = truncate_output(full_content) if full_content else "" diff --git a/tests/ra_aid/test_tool_configs.py b/tests/ra_aid/test_tool_configs.py index 40a1625..f935811 100644 --- a/tests/ra_aid/test_tool_configs.py +++ b/tests/ra_aid/test_tool_configs.py @@ -54,19 +54,19 @@ def test_get_implementation_tools(): def test_get_web_research_tools(): # Test with expert enabled tools = get_web_research_tools(expert_enabled=True) - assert len(tools) == 4 + assert len(tools) == 5 assert all(callable(tool) for tool in tools) # Get tool names and verify exact matches tool_names = [tool.name for tool in tools] - expected_names = ['emit_expert_context', 'ask_expert', 'web_search_tavily', 'emit_research_notes'] + expected_names = ['emit_expert_context', 'ask_expert', 'web_search_tavily', 'emit_research_notes', 'task_completed'] assert sorted(tool_names) == sorted(expected_names) # Test without expert enabled tools_no_expert = get_web_research_tools(expert_enabled=False) - assert len(tools_no_expert) == 2 + assert len(tools_no_expert) == 3 assert all(callable(tool) for tool in tools_no_expert) # Verify exact tool names when expert is disabled tool_names_no_expert = [tool.name for tool in tools_no_expert] - assert sorted(tool_names_no_expert) == sorted(['web_search_tavily', 'emit_research_notes']) + assert sorted(tool_names_no_expert) == sorted(['web_search_tavily', 'emit_research_notes', 'task_completed'])