Commit graph

21 commits

Author SHA1 Message Date
KJ7LNW
270fd88cc8
refactor: improve readFileTool XML output format (#2340)
* fix: addLineNumbers handling of empty content

Empty files should not have line numbers, but non-empty files with empty content at a specific line offset should.
- If content is empty, return empty string for empty files
- If content is empty but startLine > 1, return line number for empty content at that offset
This ensures that the model does not think the file contains a single empty line.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* refactor: improve readFileTool XML output format

- Remove unnecessary XML indentation that could confuse the model
- Separate file content from notices and errors using dedicated tags
- Add line range information to content tags
- Handle empty files properly with self-closing tags
- Add comprehensive test coverage

Fixes #2278

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* fix: always show line numbers in read_file XML output

- Always display line numbers in non-range reads
- Improve XML formatting with consistent newlines for better readability

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* test: update tests to match new XML format with line numbers

- Update test expectations to match the new XML format with newlines
- Update tests to expect line numbers attribute in content tags
- Modify test assertions to check for the correct line range values

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* fix: consistent blank line handling in addLineNumbers

- Add newline to all output
- Handle trailing newlines and empty lines consistently
- Add test cases for blank lines:
  - Multiple blank lines within content
  - Multiple trailing blank lines
  - Only blank lines with offset
  - Trailing newlines

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* test: use actual addLineNumbers in read-file-xml tests

- Modified extract-text mock to preserve actual addLineNumbers implementation
- Removed mock implementation of addLineNumbers
- Updated test data to account for trailing newline
- Removed unnecessary mock verification

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* test: ensure actual addLineNumbers function is called in tests

- Replace direct mocking of addLineNumbers with spy on actual implementation
- Add verification to ensure the real function is called when appropriate
- Add skipAddLineNumbersCheck option for cases where function should not be called
- Update test cases to use appropriate verification options
- Fix numberedFileContent to include trailing newline for consistency

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* fix: modify readLines to process data directly instead of line by line

- Direct data processing provides more accurate results by preserving exact content with carriage returns
- Improved performance through minimal buffering and efficient string operations
- Use string indexes to find newlines while maintaining their original format
- Handle all edge cases correctly with preserved line endings
- Add tests for various edge cases including empty files, single lines, and different line endings

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* test: remove unused mockInputContent variable

Remove unused variable declaration to appease ellipsis-dev linter requirements.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

---------

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-04-08 23:04:44 -04:00
Marco Quinten
f5a4b425da
feat(browserTool): Implement hover action (#2368)
* Implement hover action for the browser action tool

* Update snapshots
2025-04-07 09:35:14 -04:00
Marco Quinten
fff8fdd3f3
feat(browserTool): Implement resize action (#2370)
* Implement resize action for browser action tool

* Update snapshots
2025-04-07 09:34:32 -04:00
Hannes Rudolph
951cefc0fc
Refactor: Improve file tool context formatting and diff error guidance (#2278)
* refactor: Change read_file result format to XML

Modifies how the result of the `read_file` tool is presented
in the conversation history sent to the AI model.

Previously, the format was:
[read_file for 'path/to/file'] Result:
{content_or_error}

This commit changes the format to use XML tags for better
structure and potentially easier parsing by the model:
<file>
  <path>path/to/file</path>
  <content>
{content_or_error}
  </content>
</file>

This change only affects the `read_file` tool result formatting
within the user context message constructed in `src/core/Cline.ts`.
Other tool result formats remain unchanged.

* fix: Update error message for better clarity in multi-search-replace strategy

Refines the error message returned when no sufficiently similar match is found during the multi-search-replace operation. The message now includes a clearer instruction to use the read_file tool for obtaining the latest file content before attempting to apply the diff again.

* refactor: Update readFileTool to return results in XML format

Modifies the `readFileTool` function to format the output as XML, enhancing the structure of the returned file content. This change aligns with previous updates to ensure consistent result formatting across tools.

* refactor: Simplify result handling for tool responses in Cline

This update refines the handling of tool responses in the `Cline` class by removing the XML formatting for `read_file` results and consolidating the logic for pushing results to the user message content. The changes ensure that all tool results are processed uniformly, improving code clarity and maintainability.

* test: Update read_file tests to validate XML formatted results

This commit modifies the assertions in the `read_file` tool tests to check for the expected XML format in the results. The changes ensure that the output structure aligns with recent updates to the tool's response formatting, enhancing test accuracy and reliability.

* test: Refactor assertions in read_file tests to use expected XML variable

This commit updates the `read_file` tool tests to utilize a predefined variable for the expected XML output, improving readability and maintainability of the test code. The changes ensure consistency in the expected results across multiple test cases.
2025-04-04 18:26:25 -04:00
Matt Rubens
b74e1e89da
Fix Gemini command escaping (#2120) 2025-03-30 14:07:00 -04:00
Matt Rubens
253d0fecb2
Move new_task, switch_mode, attempt_completion, and ask_followup_question to tool files (#2102) 2025-03-30 01:58:35 -04:00
Matt Rubens
9b0790fce7
Move use_mcp_tool and access_mcp_resource to tool files (#2101) 2025-03-30 01:47:19 -04:00
Matt Rubens
937b1f3c90
Move execute_command to a tool file (#2100) 2025-03-30 01:40:16 -04:00
Matt Rubens
38365085d7
Move browser_action to a tool file (#2099) 2025-03-30 01:34:50 -04:00
Matt Rubens
9be36ddcf3
Move search_files to a tool file (#2098) 2025-03-30 01:28:58 -04:00
Matt Rubens
da2af71106
Move list_code_definition_names to a tool file (#2097) 2025-03-30 01:21:01 -04:00
Matt Rubens
bdb668b68b
Move search_and_replace to a tool file (#2096) 2025-03-30 01:15:43 -04:00
Matt Rubens
d5328770e7
Move insert_content to a tool file (#2095) 2025-03-30 01:10:26 -04:00
Matt Rubens
02f63fc522
Move apply_diff to a tool file (#2094) 2025-03-30 01:04:38 -04:00
Matt Rubens
26c3fe6535
Move write_to_file to a tool file (#2093) 2025-03-30 00:49:08 -04:00
Matt Rubens
1242ba808e
Fix a type in the listFiles tool (#2092) 2025-03-30 00:37:13 -04:00
Matt Rubens
72894c22a0
Remove switch from tools (#2091)
* HandleError returns a promise

* Remove unnecessary switch from tools
2025-03-30 00:31:56 -04:00
Bhavesh Ramburn
e95afc250b
Refactor/cline.ts/list files (#2067)
* "Refactor list_files tool to separate module (#2057)"

* Await

---------

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-03-30 00:20:06 -04:00
Matt Rubens
9bb50eaba3
Display info about partial reads in chat row (#2080) 2025-03-29 02:14:18 -04:00
Matt Rubens
b46f6adb78
Extract code for read_file from Cline (#2059) 2025-03-28 11:47:47 -04:00
Diarmid Mackenzie
62a7bc7959
Refactor fetch instructions to new file (#2056)
* Refactor fetch_instructions handling into separate module

* Use correct case for module name
2025-03-28 09:50:42 -04:00