import { Router } from "express"; import { discoverSessions } from "../services/session-discovery.js"; import { parseSession } from "../services/session-parser.js"; import type { SessionEntry } from "../../shared/types.js"; export const sessionsRouter = Router(); // Simple cache to avoid re-discovering sessions on every detail request let cachedSessions: SessionEntry[] = []; let cacheTimestamp = 0; const CACHE_TTL_MS = 30_000; async function getCachedSessions(): Promise { const now = Date.now(); if (now - cacheTimestamp > CACHE_TTL_MS) { cachedSessions = await discoverSessions(); cacheTimestamp = now; } return cachedSessions; } sessionsRouter.get("/", async (req, res) => { try { if (req.query.refresh === "1") { cacheTimestamp = 0; } const sessions = await getCachedSessions(); res.json({ sessions }); } catch (err) { console.error("Failed to discover sessions:", err); res.status(500).json({ error: "Failed to discover sessions" }); } }); sessionsRouter.get("/:id", async (req, res) => { try { const sessions = await getCachedSessions(); const entry = sessions.find((s) => s.id === req.params.id); if (!entry) { res.status(404).json({ error: "Session not found" }); return; } const messages = await parseSession(entry.path); res.json({ id: entry.id, project: entry.project, messages, }); } catch (err) { console.error("Failed to load session:", err); res.status(500).json({ error: "Failed to load session" }); } });