[claude] Multi-Turn Session Conversation Context (#3) #92
@@ -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 <macaroon>' 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;
|
||||
|
||||
Reference in New Issue
Block a user