bug(core): fix `contentRangeTruncated` calculation. (#5329)
Co-authored-by: Jacob Richman <jacob314@gmail.com>
This commit is contained in:
parent
43d5aaa798
commit
08f1431946
|
@ -426,6 +426,29 @@ describe('fileUtils', () => {
|
||||||
expect(result.linesShown).toEqual([6, 10]);
|
expect(result.linesShown).toEqual([6, 10]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should identify truncation when reading the end of a file', async () => {
|
||||||
|
const lines = Array.from({ length: 20 }, (_, i) => `Line ${i + 1}`);
|
||||||
|
actualNodeFs.writeFileSync(testTextFilePath, lines.join('\n'));
|
||||||
|
|
||||||
|
// Read from line 11 to 20. The start is not 0, so it's truncated.
|
||||||
|
const result = await processSingleFileContent(
|
||||||
|
testTextFilePath,
|
||||||
|
tempRootDir,
|
||||||
|
10,
|
||||||
|
10,
|
||||||
|
);
|
||||||
|
const expectedContent = lines.slice(10, 20).join('\n');
|
||||||
|
|
||||||
|
expect(result.llmContent).toContain(expectedContent);
|
||||||
|
expect(result.llmContent).toContain(
|
||||||
|
'[File content truncated: showing lines 11-20 of 20 total lines. Use offset/limit parameters to view more.]',
|
||||||
|
);
|
||||||
|
expect(result.returnDisplay).toBe('Read lines 11-20 of 20 from test.txt');
|
||||||
|
expect(result.isTruncated).toBe(true); // This is the key check for the bug
|
||||||
|
expect(result.originalLineCount).toBe(20);
|
||||||
|
expect(result.linesShown).toEqual([11, 20]);
|
||||||
|
});
|
||||||
|
|
||||||
it('should handle limit exceeding file length', async () => {
|
it('should handle limit exceeding file length', async () => {
|
||||||
const lines = ['Line 1', 'Line 2'];
|
const lines = ['Line 1', 'Line 2'];
|
||||||
actualNodeFs.writeFileSync(testTextFilePath, lines.join('\n'));
|
actualNodeFs.writeFileSync(testTextFilePath, lines.join('\n'));
|
||||||
|
|
|
@ -299,7 +299,8 @@ export async function processSingleFileContent(
|
||||||
return line;
|
return line;
|
||||||
});
|
});
|
||||||
|
|
||||||
const contentRangeTruncated = endLine < originalLineCount;
|
const contentRangeTruncated =
|
||||||
|
startLine > 0 || endLine < originalLineCount;
|
||||||
const isTruncated = contentRangeTruncated || linesWereTruncatedInLength;
|
const isTruncated = contentRangeTruncated || linesWereTruncatedInLength;
|
||||||
|
|
||||||
let llmTextContent = '';
|
let llmTextContent = '';
|
||||||
|
|
Loading…
Reference in New Issue