Files
paseo/packages/app/src/contexts/session-timeline-seq-gate.ts
2026-03-29 23:20:18 +07:00

28 lines
510 B
TypeScript

export type SessionTimelineSeqCursor =
| {
endSeq: number;
}
| null
| undefined;
export type SessionTimelineSeqDecision = "accept" | "drop_stale" | "gap" | "init";
export function classifySessionTimelineSeq({
cursor,
seq,
}: {
cursor: SessionTimelineSeqCursor;
seq: number;
}): SessionTimelineSeqDecision {
if (!cursor) {
return "init";
}
if (seq <= cursor.endSeq) {
return "drop_stale";
}
if (seq === cursor.endSeq + 1) {
return "accept";
}
return "gap";
}