Commit graph

56 commits

Author SHA1 Message Date
Chris Estreich
d3c469391f
Show LLM streaming file write content (#3241) 2025-05-13 09:47:33 -07:00
Xudong Zhang
f6cae4df05
fix(task): temporary fix for the ask error (#3471)
Co-authored-by: cte <cestreich@gmail.com>
2025-05-12 21:38:36 -07:00
KJ7LNW
7d75536741
fix: webview terminal output processing error (#3028) 2025-05-11 17:51:22 -07:00
KJ7LNW
1688bd66c0
fix: handle unsupported language errors gracefully in read_file tool (#3359)
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-05-08 22:51:44 -04:00
Murilo Pires
fb807c1056
fix: Prevent terminal focus theft on paste after command execution (#3356) 2025-05-08 22:43:06 -04:00
Chris Estreich
1a78be3bfa
Rename Cline to Task (#3352) 2025-05-08 12:47:50 -07:00
Chris Estreich
7cea2e8bc4
Move presentAssistantMessage into its own module (#3345) 2025-05-08 11:59:03 -07:00
Matt Rubens
756c0a0014
Fix issues with subtasks attempting completion along with commands (#3156) 2025-05-03 23:57:19 -07:00
Chris Estreich
dd3cd7fd7d
More robust process killing (#3136) 2025-05-02 18:15:22 -07:00
Chris Estreich
19ef52bd85
More command execution improvements (#3124) 2025-05-02 14:51:53 -07:00
Chris Estreich
2e66081921
Terminal performance improvements (#3119) 2025-05-02 02:38:40 -07:00
Chris Estreich
1d7569b14c
Improve command execution component (#3057) 2025-04-29 23:56:59 -07:00
Chris Estreich
7863303aac
Fall back to execa if VSCode terminal integration fails (#3049) 2025-04-29 21:10:41 -07:00
Chris Estreich
2e1d949e65
Add support for multiple command execution strategies (#2820) 2025-04-28 08:55:07 -07:00
Chris Estreich
1924e10e72
Fix all linter errors (and fix the lint scripts too) (#2958) 2025-04-26 09:45:26 -07:00
axb
3b65023d0b
feat(diff): improve progress indicator for apply_diff tool (#2758)
Add animated dots to progress indicator based on content length
Optimize when progress updates are shown (every 10 characters)
Move searchBlockCount calculation inside conditional blocks
Skip unnecessary ask operations when toolProgressStatus is empty
2025-04-24 00:12:07 -04:00
Matt Rubens
3e2d20f37c
Search and replace fixes (#2830)
* Allow replacing with an empty string

* Visual cleanup
2025-04-21 22:57:58 -04:00
Matt Rubens
ff5430a95c
Try adding better errors for write_to_file truncated output (#2821) 2025-04-21 21:18:25 -04:00
Sam Hoang Van
f06567d579
Feat/improve insert block content (#2510)
* refactor: enhance insertGroups and insertContentTool for better handling of insertion operations

* refactor: simplify insert_content tool

- Remove operations-based implementation in favor of single line insertion
- Update parameters from operations to line and content
- Simplify insertion logic and error handling
- Update tool description and documentation
- Remove XML parsing for operations
- Clean up code and improve error messages

* refactor: remove insert_content experiment and related tests

* Remove the append_to_file tool

* Improvements to chat row and instructions

---------

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-04-21 16:49:27 -04:00
Sam Hoang Van
80b298492c
improve search and replace tool (#2764)
* Refactor search and replace tool

* feat(search-replace): enhance search/replace tool UI and messaging

Refactor search/replace tool message structure for better consistency
Add dedicated UI component for displaying search/replace operations
Add i18n support for search/replace operations in all supported languages
Improve partial tool handling in searchAndReplaceTool

* Remove search_and_replace experiment and related references
2025-04-21 15:25:03 -04:00
Chris Estreich
61e23cccb6
Record tool use errors encountered during eval runs (#2816) 2025-04-21 11:04:35 -07:00
Matt Rubens
a244a9dc21
Fix a bad search/replace when moving tools into their own files (#2815) 2025-04-21 13:54:02 -04:00
Matt Rubens
29137fbfec
Revert changes on omitted line count in write_to_file (#2807) 2025-04-21 00:24:52 -04:00
Chris Estreich
f6e4e3504f
Move executeCommand out of Cline and add telemetry for shell integration errors (#2771) 2025-04-18 14:43:04 -07:00
Chris Estreich
87af3b3424
Record tool usages in the Cline object, and persist them in the db for evals (#2729) 2025-04-17 22:21:14 -07:00
Chris Estreich
471caff000
Clean up types related to tools (#2719) 2025-04-17 13:31:48 -07:00
Sam Hoang Van
1e0e01b9f3
feat: add append_to_file tool for appending content to files (#2712)
- Implemented the append_to_file tool to allow users to append content to existing files or create new ones if they do not exist.
- Updated the rules and instructions to include the new tool.
- Added tests for the append_to_file functionality, covering various scenarios including error handling and content preprocessing.
- Enhanced the experiment schema to include the new append_to_file experiment ID.
- Updated relevant interfaces and types to accommodate the new tool.
- Modified the UI to display the append_to_file tool in the appropriate sections.
2025-04-17 15:58:22 -04:00
Matt Rubens
ba5af60109
Fix diff escaping issues (#2694)
* Fix diff escaping issues

* Potential fix for code scanning alert no. 75: Double escaping or unescaping

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-04-16 18:05:04 -04:00
Matt Rubens
9d761e23e2
Add consecutive mistake count to diff error telemetry (#2687) 2025-04-16 12:02:49 -04:00
Matt Rubens
4f5796c152
Add telemetry for diff errors (#2619) 2025-04-15 00:27:34 -04:00
Matt Rubens
1eb29be33d
Remove the end_line from the multi_diff instructions and logic (#2615) 2025-04-14 20:39:27 -04:00
Matt Rubens
624691abb0
Respect the setting to always read the full file (#2514) 2025-04-12 00:14:39 -04:00
Matt Rubens
e41d6a42ac
Better display of diff errors (#2478) 2025-04-10 22:32:11 -04:00
Sam Hoang Van
5352beb95c
feat: Add file context tracking system (#2440)
* feat: Add file context tracking system

This commit adds a comprehensive file context tracking system that monitors file operations (reads, edits) by both Roo and users. The system helps prevent stale context issues and improves checkpoint management.

Key features:
- Track files accessed via tools, mentions, or edits
- Monitor file changes outside of Roo using file watchers
- Store file operation metadata with timestamps
- Trigger checkpoints automatically when files are modified
- Prevent false positives by distinguishing between Roo and user edits

The implementation includes:
- New FileContextTracker class to manage file operations
- Type definitions for file metadata tracking
- Integration with all file-related tools
- File mention tracking in the mentions system
- Improved checkpoint triggering based on file modifications

* Update src/core/context-tracking/FileContextTracker.ts

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Update src/core/context-tracking/FileContextTracker.ts

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* test: Add mocks for getFileContextTracker in Cline tests

---------

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-04-10 10:56:52 -04:00
Matt Rubens
75ba1db3ca
Improve subtasks UI (#2426) 2025-04-09 01:45:45 -04:00
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