from fastapi import APIRouter from events.replay import ReplayController router = APIRouter() # in-memory demo store (later replace with session DB) REPLAY_SESSIONS = {} def get_session(journal_id): return REPLAY_SESSIONS.get(journal_id) # ------------------------- # START REPLAY SESSION # ------------------------- @router.post("/replay/start") def start_replay(journal): session = ReplayController(journal) session_id = str(id(session)) REPLAY_SESSIONS[session_id] = session return { "session_id": session_id, "event_count": len(session.timeline) } # ------------------------- # STEP FORWARD # ------------------------- @router.post("/replay/step") def replay_step(session_id: str): session = get_session(session_id) event = session.step() return { "event": event, "index": session.index } # ------------------------- # SEEK # ------------------------- @router.post("/replay/seek") def replay_seek(session_id: str, timestamp: float): session = get_session(session_id) event = session.seek(timestamp) return { "event": event, "index": session.index } # ------------------------- # RESET # ------------------------- @router.post("/replay/reset") def replay_reset(session_id: str): session = get_session(session_id) event = session.reset() return { "event": event, "index": session.index }