diff --git a/artifacts/api-server/src/routes/sessions.ts b/artifacts/api-server/src/routes/sessions.ts index 6d459b7..036d79e 100644 --- a/artifacts/api-server/src/routes/sessions.ts +++ b/artifacts/api-server/src/routes/sessions.ts @@ -574,4 +574,32 @@ router.post("/sessions/:id/topup", async (req: Request, res: Response) => { } }); +// ── DELETE /sessions/:id/history ───────────────────────────────────────────── + +router.delete("/sessions/:id/history", async (req: Request, res: Response) => { + const id = req.params.id as string; + const macaroon = extractMacaroon(req); + + try { + const session = await getSessionById(id); + if (!session) { res.status(404).json({ error: "Session not found" }); return; } + + if (!macaroon || macaroon !== session.macaroon) { + res.status(401).json({ error: "Invalid or missing macaroon. Include 'Authorization: Bearer ' header." }); + return; + } + + if (checkExpired(session) || session.state === "expired") { + res.status(410).json({ error: "Session has expired" }); + return; + } + + await db.delete(sessionMessages).where(eq(sessionMessages.sessionId, id)); + + res.json({ cleared: true }); + } catch (err) { + res.status(500).json({ error: err instanceof Error ? err.message : "Failed to clear history" }); + } +}); + export default router;