Commit graph

25 commits

Author SHA1 Message Date
Hannes Rudolph
026091e432
Fix filename format in downloadTask function for markdown export (#2717)
* Fix filename format in downloadTask function for markdown export

* Update src/integrations/misc/export-markdown.ts

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

---------

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-04-17 16:18:50 -04:00
Matt Rubens
c18e25f4bc
Fall back on aggressive line number stripping in diffs (#2453)
* Add option for aggressive line number stripping

* Fall back on aggressive line number stripping in diffs
2025-04-10 00:29:50 -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
KJ7LNW
5e0c9a71e4
fix: clamp negative line numbers when reading files (#2337)
Improve handling of AI-generated line numbers:
- Clamp negative startLine values to 0 instead of throwing errors
- Convert non-integer line numbers to integers automatically
- Only reject when line numbers aren't numbers at all

These changes prevent unnecessary model retries by handling imperfect
AI-generated line numbers gracefully, making the system more robust
when interacting with AI models.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-04-05 22:10:11 -04:00
Matt Rubens
4fa4943d5f
Revert "[clinerules] search clinerule in parent folders which make it easier to share within a github repo" (#1959)
Revert "[clinerules] search clinerule in parent folders which make it easier …"

This reverts commit 2953baef97.
2025-03-24 23:09:25 -04:00
ying
2953baef97
[clinerules] search clinerule in parent folders which make it easier to share within a github repo (#1832)
* [clinerules] search clinerule in parent folders which make it easier to share common clinerules for a git repo

* fix indent

* Fix test

---------

Co-authored-by: Ying Liu <lying@microsoft.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-03-24 14:18:30 -04:00
Sam Hoang Van
70a476e722
feat read file range (#1440)
* feat read file range

feat: add file truncation with code structure preview

Add configurable line limit for large file handling with source code structure preview. This improves performance and memory usage while maintaining code readability.

Key changes:

Add maxReadFileLine setting (default: 4500) with UI controls
Create efficient line counter utility using streams
Add parseSourceCodeDefinitionsForFile for single file parsing
Show truncation notice with code structure for large files
Add comprehensive tests for new functionality
Move file extensions to shared constant

add line number

pr comment

Return definition ranges from tree-sitter

make treesitter always add line

add line number to rg search

enhance tree siter output & fix test

update snapshot

fix test

* Add translations, tweak range

---------

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-03-20 00:55:47 -04:00
teddyOOXX
23af4c2609
add multiple workspaces support (#1725)
feat: add multiple workspaces support

- Add getWorkspacePath function to centralize workspace directory path retrieval
- Use the new workspace directory retrieval logic in Cline, Mentions, ClineProvider, and WorkspaceTracker
- Update WorkspaceFile on tab switch and prevent redundant updates by checking prevWorkSpacePath
- Fix the bug that loads the contents of the previous tab when quickly switching tabs
- Optimize getWorkspacePath return value for better reliability

Co-authored-by: xiong <yueminxiong.xym@alibaba-inc.com>
2025-03-18 02:14:39 -04:00
Eric Wheeler
131f9ad0d9 feat: add run-length encoding for repeated lines
Implement applyRunLengthEncoding function to compress repeated lines in text output:
- Add line repetition compression with count message
- Focus on single line repetitions
- Only compress when beneficial
- Add tests for empty input and single line repetitions

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-10 20:55:05 -07:00
Eric Wheeler
c31a5e5bcd perf: optimize truncateOutput for large inputs
Use string indices to find line boundaries instead of splitting into array.
This avoids creating large arrays in memory when truncating big inputs.

- Replace split/join with indexOf/lastIndexOf for line counting
- Use slice to extract start/end sections directly from string
- Maintain same 20/80 ratio for before/after content

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-10 20:55:05 -07:00
Eric Wheeler
070a36baa2 Revert "Smart truncation for terminal output"
This reverts commit 7eee3e0878.

Middle-out truncation is a really great feature and it should still be
implemented, however it unnecessarily interferes with #1365 because it
hooked into the low-level chunk management that comes directly from VSCE
shell integration.

The best place to hook OutputBuilder is as follows depending on the
state of terminal interaction:

1. Foreground terminals:

Cline.ts:
	 executeCommandTool(...) {
	     process.on("line", (line) => {
		    lines.push(line)
		    ...
	    }
	 }

2. For background terminals: hook in at the point that getUnretrievedOutput is consumed for active or
   inactive terminals in Cline.ts:getEnvironmentDetails()

Please note:

The Terminal classes are very sensitive to change, partially because of
the complicated way that shell integration works with VSCE, and
partially because of the way that Cline interacts with the Terminal*
class abstractions that make VSCE shell integration easier to work with.

At the point that PR#1365 is merged, it is unlikely that any Terminal*
classes will need to be modified substantially.  Generally speaking, we
should think of this is a stable interface and minimize changes.

Reverts: #1390
2025-03-10 20:54:53 -07:00
cte
7eee3e0878 Smart truncation for terminal output 2025-03-05 19:36:52 -08:00
cte
22391e5011 Fix type errors 2025-02-24 15:55:04 -08:00
Matt Rubens
60a0a824b9 Prettier backfill 2025-01-17 14:11:28 -05:00
Matt Rubens
365f4acf63 Add mode-specific custom instructions 2025-01-14 14:54:30 -05:00
Matt Rubens
7e9ea7ac28 Add a Git section to the context mentions 2025-01-06 12:17:26 -05:00
Matt Rubens
800db618bb Strip line numbers from write_to_file 2024-12-17 09:28:37 -05:00
Matt Rubens
c2b4b05459 Diff debugging 2024-12-16 12:19:44 -05:00
Matt Rubens
c0b070e6f0
Improvements to apply_diff (#52) 2024-12-08 10:51:40 -05:00
Mark Percival
93e70c62f1
Chore: Prettier for consistant formatting (#794)
* Chore: Pretier for consistant formatting

- TODO: This PR needs to be updated by Saoud after he runs `npm install` & `npm format:fix` and commits the results of the prettier changes.

* Revert prettier config

* Run npm install

* Fix prettier config and ignore package lock

* Run format

---------

Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
2024-11-21 13:13:54 -08:00
Saoud Rizwan
26bcc0b7ca Replace tool blocks with xml tags format to allow continuing old tasks without passing in tool schema to API 2024-10-09 03:25:19 -04:00
Saoud Rizwan
c04dfc76cb Misc refactor cline 2024-10-09 01:49:59 -04:00
Saoud Rizwan
77e0738d4c Fixes 2024-10-09 01:49:56 -04:00
Saoud Rizwan
40f7942801 Refactor out of utils 2024-09-24 11:45:12 -04:00
Saoud Rizwan
7c21a4c833 Refactor out of utils 2024-09-24 11:36:37 -04:00