From 3de031bcce25be45efd3f8281ea548af420f40b0 Mon Sep 17 00:00:00 2001 From: jemeza-codegen Date: Fri, 14 Mar 2025 10:18:32 -0700 Subject: [PATCH 1/4] chore: increases max file size limit for the view file tool --- codegen-examples/examples/swebench_agent_run/.gitignore | 1 + src/codegen/extensions/langchain/tools.py | 6 +++--- src/codegen/extensions/tools/view_file.py | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) create mode 100644 codegen-examples/examples/swebench_agent_run/.gitignore diff --git a/codegen-examples/examples/swebench_agent_run/.gitignore b/codegen-examples/examples/swebench_agent_run/.gitignore new file mode 100644 index 000000000..2737aca5c --- /dev/null +++ b/codegen-examples/examples/swebench_agent_run/.gitignore @@ -0,0 +1 @@ +.env.db diff --git a/src/codegen/extensions/langchain/tools.py b/src/codegen/extensions/langchain/tools.py index 877b59f05..9c8e56d25 100644 --- a/src/codegen/extensions/langchain/tools.py +++ b/src/codegen/extensions/langchain/tools.py @@ -51,7 +51,7 @@ class ViewFileInput(BaseModel): filepath: str = Field(..., description="Path to the file relative to workspace root") start_line: Optional[int] = Field(None, description="Starting line number to view (1-indexed, inclusive)") end_line: Optional[int] = Field(None, description="Ending line number to view (1-indexed, inclusive)") - max_lines: Optional[int] = Field(None, description="Maximum number of lines to view at once, defaults to 250") + max_lines: Optional[int] = Field(None, description="Maximum number of lines to view at once, defaults to 750") line_numbers: Optional[bool] = Field(True, description="If True, add line numbers to the content (1-indexed)") @@ -60,7 +60,7 @@ class ViewFileTool(BaseTool): name: ClassVar[str] = "view_file" description: ClassVar[str] = """View the contents and metadata of a file in the codebase. -For large files (>250 lines), content will be paginated. Use start_line and end_line to navigate through the file. +For large files (>750 lines), content will be paginated. Use start_line and end_line to navigate through the file. The response will indicate if there are more lines available to view.""" args_schema: ClassVar[type[BaseModel]] = ViewFileInput codebase: Codebase = Field(exclude=True) @@ -82,7 +82,7 @@ def _run( line_numbers=line_numbers if line_numbers is not None else True, start_line=start_line, end_line=end_line, - max_lines=max_lines if max_lines is not None else 250, + max_lines=max_lines if max_lines is not None else 750, ) return result.render() diff --git a/src/codegen/extensions/tools/view_file.py b/src/codegen/extensions/tools/view_file.py index 88bb4bc28..21f27b534 100644 --- a/src/codegen/extensions/tools/view_file.py +++ b/src/codegen/extensions/tools/view_file.py @@ -78,7 +78,7 @@ def view_file( line_numbers: bool = True, start_line: Optional[int] = None, end_line: Optional[int] = None, - max_lines: int = 250, + max_lines: int = 1000, ) -> ViewFileObservation: """View the contents and metadata of a file. @@ -88,7 +88,7 @@ def view_file( line_numbers: If True, add line numbers to the content (1-indexed) start_line: Starting line number to view (1-indexed, inclusive) end_line: Ending line number to view (1-indexed, inclusive) - max_lines: Maximum number of lines to view at once, defaults to 250 + max_lines: Maximum number of lines to view at once, defaults to 1000 """ try: file = codebase.get_file(filepath) From 411a3da9ef33ae6f5e19ab352d4f999286a83759 Mon Sep 17 00:00:00 2001 From: jemeza-codegen Date: Fri, 14 Mar 2025 16:13:31 -0700 Subject: [PATCH 2/4] chore: increased view file window limit --- src/codegen/extensions/langchain/tools.py | 6 +++--- src/codegen/extensions/tools/reflection.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/codegen/extensions/langchain/tools.py b/src/codegen/extensions/langchain/tools.py index 9c8e56d25..c48ff0337 100644 --- a/src/codegen/extensions/langchain/tools.py +++ b/src/codegen/extensions/langchain/tools.py @@ -51,7 +51,7 @@ class ViewFileInput(BaseModel): filepath: str = Field(..., description="Path to the file relative to workspace root") start_line: Optional[int] = Field(None, description="Starting line number to view (1-indexed, inclusive)") end_line: Optional[int] = Field(None, description="Ending line number to view (1-indexed, inclusive)") - max_lines: Optional[int] = Field(None, description="Maximum number of lines to view at once, defaults to 750") + max_lines: Optional[int] = Field(None, description="Maximum number of lines to view at once, defaults to 500") line_numbers: Optional[bool] = Field(True, description="If True, add line numbers to the content (1-indexed)") @@ -60,7 +60,7 @@ class ViewFileTool(BaseTool): name: ClassVar[str] = "view_file" description: ClassVar[str] = """View the contents and metadata of a file in the codebase. -For large files (>750 lines), content will be paginated. Use start_line and end_line to navigate through the file. +For large files (>500 lines), content will be paginated. Use start_line and end_line to navigate through the file. The response will indicate if there are more lines available to view.""" args_schema: ClassVar[type[BaseModel]] = ViewFileInput codebase: Codebase = Field(exclude=True) @@ -82,7 +82,7 @@ def _run( line_numbers=line_numbers if line_numbers is not None else True, start_line=start_line, end_line=end_line, - max_lines=max_lines if max_lines is not None else 750, + max_lines=max_lines if max_lines is not None else 500, ) return result.render() diff --git a/src/codegen/extensions/tools/reflection.py b/src/codegen/extensions/tools/reflection.py index 4c50bf68f..6e5aad3d6 100644 --- a/src/codegen/extensions/tools/reflection.py +++ b/src/codegen/extensions/tools/reflection.py @@ -188,7 +188,7 @@ def perform_reflection( # Initialize the LLM llm = LLM( model_provider="anthropic", - model_name="claude-3-5-sonnet-latest", + model_name="claude-3-7-sonnet-latest", temperature=0.2, # Slightly higher temperature for more creative reflection max_tokens=4000, ) From 883ccafc50cd82a0850c618fb78fcbdbb2f3f432 Mon Sep 17 00:00:00 2001 From: jemeza-codegen Date: Fri, 14 Mar 2025 16:19:04 -0700 Subject: [PATCH 3/4] chore: updating default var in tool function --- src/codegen/extensions/tools/view_file.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/codegen/extensions/tools/view_file.py b/src/codegen/extensions/tools/view_file.py index 21f27b534..a53106491 100644 --- a/src/codegen/extensions/tools/view_file.py +++ b/src/codegen/extensions/tools/view_file.py @@ -78,7 +78,7 @@ def view_file( line_numbers: bool = True, start_line: Optional[int] = None, end_line: Optional[int] = None, - max_lines: int = 1000, + max_lines: int = 500, ) -> ViewFileObservation: """View the contents and metadata of a file. @@ -88,7 +88,7 @@ def view_file( line_numbers: If True, add line numbers to the content (1-indexed) start_line: Starting line number to view (1-indexed, inclusive) end_line: Ending line number to view (1-indexed, inclusive) - max_lines: Maximum number of lines to view at once, defaults to 1000 + max_lines: Maximum number of lines to view at once, defaults to 500 """ try: file = codebase.get_file(filepath) From ad946ddf1d18e53b7852cc6608aae0431dd32922 Mon Sep 17 00:00:00 2001 From: jemeza-codegen Date: Tue, 18 Mar 2025 12:02:28 -0700 Subject: [PATCH 4/4] chore: updating the tests --- tests/unit/codegen/extensions/test_tools.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/unit/codegen/extensions/test_tools.py b/tests/unit/codegen/extensions/test_tools.py index b7c728d74..0af57b89d 100644 --- a/tests/unit/codegen/extensions/test_tools.py +++ b/tests/unit/codegen/extensions/test_tools.py @@ -114,9 +114,9 @@ def test_view_file_pagination(large_codebase): result = view_file(large_codebase, "src/large_file.py") assert result.status == "success" assert result.start_line == 1 - assert result.end_line == 250 # Default max_lines + assert result.end_line == 500 # Default max_lines assert result.has_more is True - assert result.max_lines_per_page == 250 + assert result.max_lines_per_page == 500 assert "from __future__ import annotations" in result.content # First line assert "def method_1" in result.content # Early method assert "def method_251" not in result.content # Method after page 1 @@ -141,8 +141,8 @@ def test_view_file_pagination(large_codebase): assert result.has_more is True assert "def method_69" in result.content # Regular method assert "def class_method_80" in result.content # Class method at 80 - # Should show 250 lines from start (350 to 599) - assert result.end_line == 599 + # Should show 500 lines from start (350 to 849) + assert result.end_line == 849 # Test custom max_lines result = view_file(large_codebase, "src/large_file.py", max_lines=100) @@ -191,13 +191,13 @@ def test_view_file_pagination_edge_cases(large_codebase): assert result.status == "success" assert result.start_line == 200 # Should respect max_lines and file length - assert result.end_line == min(200 + 250 - 1, 2010) + assert result.end_line == min(200 + 500 - 1, 2010) # Test negative start_line (should default to 1) result = view_file(large_codebase, "src/large_file.py", start_line=-10) assert result.status == "success" assert result.start_line == 1 - assert result.end_line == 250 + assert result.end_line == 500 def test_list_directory(codebase):