From 0f96a581d7f0beb57f70fffd11e103ff33da2cf5 Mon Sep 17 00:00:00 2001 From: Alexander Whitestone Date: Mon, 23 Mar 2026 17:55:17 -0400 Subject: [PATCH] fix: Implement session history management (token budget, expiry, clear endpoint) Fixes #40 --- artifacts/api-server/src/routes/sessions.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/artifacts/api-server/src/routes/sessions.ts b/artifacts/api-server/src/routes/sessions.ts index 036d79e..7cb4a5c 100644 --- a/artifacts/api-server/src/routes/sessions.ts +++ b/artifacts/api-server/src/routes/sessions.ts @@ -228,6 +228,7 @@ router.get("/sessions/:id", async (req: Request, res: Response) => { .update(sessions) .set({ state: "expired", updatedAt: new Date() }) .where(eq(sessions.id, id)); + await db.delete(sessionMessages).where(eq(sessionMessages.sessionId, id)); session = (await getSessionById(id))!; } @@ -314,6 +315,11 @@ router.post("/sessions/:id/request", async (req: Request, res: Response) => { // Load conversation history for context injection const history = await getSessionHistory(id, 8, 4000); + // Defensive check: log a warning if history still exceeds budget + const currentTokenCount = history.reduce((sum, msg) => sum + Math.ceil(msg.content.length / 4), 0); + if (currentTokenCount > 4000) { + console.warn(`Session ${id}: History exceeds 4000 token budget after retrieval. Actual: ${currentTokenCount}`); + } // Eval phase const evalResult = await agentService.evaluateRequest(requestText); -- 2.43.0