Something went wrong. Try again.
fork of prime agent with changes i want but are not upstreamable probqbly (and some fixes)
Something went wrong. Try again.
2.0 kB · 55 lines
TypeScript
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556import { describe, expect, it } from "vitest";import type { ExtensionAPI, SessionBeforeCompactEvent, SessionCompactEvent } from "../src/core/extensions/index.js";
describe("Documentation example", () => { it("custom compaction example should type-check correctly", () => { const exampleExtension = (pi: ExtensionAPI) => { pi.on("session_before_compact", async (event: SessionBeforeCompactEvent, ctx) => { const { preparation, branchEntries } = event; const { sessionManager, modelRegistry } = ctx; const { messagesToSummarize, turnPrefixMessages, tokensBefore, firstKeptEntryId, isSplitTurn } = preparation;
expect(Array.isArray(messagesToSummarize)).toBe(true); expect(Array.isArray(turnPrefixMessages)).toBe(true); expect(typeof isSplitTurn).toBe("boolean"); expect(typeof tokensBefore).toBe("number"); expect(typeof sessionManager.getEntries).toBe("function"); expect(typeof modelRegistry.getApiKeyAndHeaders).toBe("function"); expect(typeof firstKeptEntryId).toBe("string"); expect(Array.isArray(branchEntries)).toBe(true);
const summary = messagesToSummarize .filter((m) => m.role === "user") .map((m) => `- ${typeof m.content === "string" ? m.content.slice(0, 100) : "[complex]"}`) .join("\n");
return { compaction: { summary: `User requests:\n${summary}`, firstKeptEntryId, tokensBefore, }, }; }); };
expect(typeof exampleExtension).toBe("function"); });
it("compact event should have correct fields", () => { const checkCompactEvent = (pi: ExtensionAPI) => { pi.on("session_compact", async (event: SessionCompactEvent) => { const entry = event.compactionEntry; const fromExtension = event.fromExtension;
expect(entry.type).toBe("compaction"); expect(typeof entry.summary).toBe("string"); expect(typeof entry.tokensBefore).toBe("number"); expect(typeof fromExtension).toBe("boolean"); }); };
expect(typeof checkCompactEvent).toBe("function"); });});