fix: prevent context exhaustion when reading large files #6072
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR fixes issue #6069 where the codebase condensing feature fails when Roo Code accidentally tries to read very large source files (>5000 lines), causing the context window to be exhausted.
Changes
largeFileLineThresholdsetting (default: 5000 lines)maxReadFileLineis -1 (no limit) and a file exceeds the threshold, it's automatically truncated to the first 1000 linesHow it works
maxReadFileLineis set to -1 (unlimited), the tool checks if the file exceedslargeFileLineThresholdTesting
Fixes #6069
Important
Adds file size and line threshold checks to prevent context exhaustion when reading large files, with new settings and tests.
readFileTool.tsto reject large files before reading.largeFileLineThresholdsetting (default: 5000 lines) inglobal-settings.ts.maxReadFileLineis -1 and file exceeds threshold.largeFileLineThresholdto global settings schema inglobal-settings.ts.webviewMessageHandler.tsto handlelargeFileLineThresholdmessages.readFileTool.spec.tsfor file size rejection and line threshold behavior.This description was created by
for 4b278cf. You can customize this summary. It will automatically update as commits are pushed.