fix(coding-agent): count custom messages in compaction budget
closes #6326
This commit is contained in:
@@ -18,6 +18,7 @@ import {
|
||||
import {
|
||||
buildSessionContext,
|
||||
type CompactionEntry,
|
||||
type CustomMessageEntry,
|
||||
type ModelChangeEntry,
|
||||
migrateSessionEntries,
|
||||
parseSessionEntries,
|
||||
@@ -134,6 +135,21 @@ function createThinkingLevelEntry(thinkingLevel: string): ThinkingLevelChangeEnt
|
||||
return entry;
|
||||
}
|
||||
|
||||
function createCustomMessageEntry(content: string): CustomMessageEntry {
|
||||
const id = `test-id-${entryCounter++}`;
|
||||
const entry: CustomMessageEntry = {
|
||||
type: "custom_message",
|
||||
id,
|
||||
parentId: lastId,
|
||||
timestamp: new Date().toISOString(),
|
||||
customType: "test",
|
||||
content,
|
||||
display: true,
|
||||
};
|
||||
lastId = id;
|
||||
return entry;
|
||||
}
|
||||
|
||||
function extractText(messages: AgentMessage[]): string {
|
||||
return messages
|
||||
.map((message) => {
|
||||
@@ -338,6 +354,25 @@ describe("findCutPoint", () => {
|
||||
expect(result.turnStartIndex).toBe(2); // Turn 2 starts at index 2
|
||||
}
|
||||
});
|
||||
|
||||
it("should budget context-visible custom message entries", () => {
|
||||
const entries: SessionEntry[] = [
|
||||
createMessageEntry(createUserMessage("hi")),
|
||||
createMessageEntry(createAssistantMessage("hello")),
|
||||
createCustomMessageEntry("x".repeat(4000)),
|
||||
createMessageEntry(createAssistantMessage("ok")),
|
||||
];
|
||||
|
||||
const tinyBudget = findCutPoint(entries, 0, entries.length, 1);
|
||||
expect(tinyBudget.firstKeptEntryIndex).toBe(3);
|
||||
expect(tinyBudget.isSplitTurn).toBe(true);
|
||||
expect(tinyBudget.turnStartIndex).toBe(2);
|
||||
|
||||
const customFitsBudget = findCutPoint(entries, 0, entries.length, 2);
|
||||
expect(customFitsBudget.firstKeptEntryIndex).toBe(2);
|
||||
expect(customFitsBudget.isSplitTurn).toBe(false);
|
||||
expect(customFitsBudget.turnStartIndex).toBe(-1);
|
||||
});
|
||||
});
|
||||
|
||||
describe("buildSessionContext", () => {
|
||||
|
||||
Reference in New Issue
Block a user