import type { Router } from "express"; import express from "express"; import type { SharedUIState, SharedUIStatePatch } from "../state/uiState.js"; export { SharedUIState, SharedUIStatePatch }; export interface UIStateRouteOptions { getSharedUIState: () => SharedUIState; patchSharedUIState: ( patch: SharedUIStatePatch, ) => Promise | SharedUIState; } export function createUIStateRoutes(options: UIStateRouteOptions): Router { const router = express.Router(); const { getSharedUIState, patchSharedUIState } = options; // GET /api/ui-state - Get current UI state router.get("/ui-state", (_req, res, next) => { try { const state = getSharedUIState(); res.json(state); } catch (error) { next(error); } }); // POST /api/ui-state - Update UI state router.post("/ui-state", async (req, res, next) => { try { const patch = req.body as SharedUIStatePatch; const updated = await patchSharedUIState(patch); res.json(updated); } catch (error) { next(error); } }); return router; }