Improve before_compact hook: add messagesToKeep, replace apiKey with resolveApiKey

This commit is contained in:
Mario Zechner 2025-12-24 12:41:22 +01:00
parent e4283294c8
commit d9a542763a
8 changed files with 51 additions and 24 deletions

View file

@ -15,17 +15,19 @@ describe("Documentation example", () => {
// After narrowing, these should all be accessible
const messages = event.messagesToSummarize;
const messagesToKeep = event.messagesToKeep;
const cutPoint = event.cutPoint;
const tokensBefore = event.tokensBefore;
const model = event.model;
const apiKey = event.apiKey;
const resolveApiKey = event.resolveApiKey;
// Verify types
expect(Array.isArray(messages)).toBe(true);
expect(Array.isArray(messagesToKeep)).toBe(true);
expect(typeof cutPoint.firstKeptEntryIndex).toBe("number");
expect(typeof tokensBefore).toBe("number");
expect(model).toBeDefined();
expect(typeof apiKey).toBe("string");
expect(typeof resolveApiKey).toBe("function");
const summary = messages
.filter((m) => m.role === "user")

View file

@ -129,9 +129,10 @@ describe.skipIf(!API_KEY)("Compaction hooks", () => {
expect(beforeEvent.cutPoint).toBeDefined();
expect(beforeEvent.cutPoint.firstKeptEntryIndex).toBeGreaterThanOrEqual(0);
expect(beforeEvent.messagesToSummarize).toBeDefined();
expect(beforeEvent.messagesToKeep).toBeDefined();
expect(beforeEvent.tokensBefore).toBeGreaterThanOrEqual(0);
expect(beforeEvent.model).toBeDefined();
expect(beforeEvent.apiKey).toBeDefined();
expect(beforeEvent.resolveApiKey).toBeDefined();
}
const afterEvent = compactEvents[0];
@ -336,14 +337,14 @@ describe.skipIf(!API_KEY)("Compaction hooks", () => {
expect(event.cutPoint).toHaveProperty("turnStartIndex");
expect(Array.isArray(event.messagesToSummarize)).toBe(true);
expect(Array.isArray(event.messagesToKeep)).toBe(true);
expect(typeof event.tokensBefore).toBe("number");
expect(event.model).toHaveProperty("provider");
expect(event.model).toHaveProperty("id");
expect(typeof event.apiKey).toBe("string");
expect(event.apiKey.length).toBeGreaterThan(0);
expect(typeof event.resolveApiKey).toBe("function");
expect(Array.isArray(event.entries)).toBe(true);
expect(event.entries.length).toBeGreaterThan(0);