返回 DeepSeek-Reasonix
sessionTranscriptMode.ts
根目录 / desktop / frontend / src / lib / sessionTranscriptMode.ts
1 import type { TranscriptProjection } from "./transcriptStore";
2 import type { Meta } from "./types";
3
4 export function historyFingerprintMatchesMeta(history: { revision: number; revisionKnown?: boolean; digest?: string }, meta: Meta): boolean {
5 const expectedDigest = (meta.sessionDigest ?? "").trim();
6 if (expectedDigest && history.digest !== expectedDigest) return false;
7 const expectedRevision = meta.sessionRevision ?? 0;
8 return expectedRevision <= 0 || Boolean(history.revisionKnown && history.revision === expectedRevision);
9 }
10
11 export function historyRevisionIsOlder(current: number | undefined, incoming: number | undefined): boolean {
12 return typeof current === "number" && current > 0
13 && typeof incoming === "number" && incoming > 0
14 && incoming < current;
15 }
16
17 export function historyReplaceAction(projection: TranscriptProjection) {
18 return {
19 type: "history_replace" as const, items: projection.items,
20 startTurn: projection.startTurn, endTurn: projection.endTurn, totalTurns: projection.totalTurns,
21 hasOlder: projection.hasOlder, hasNewer: projection.hasNewer,
22 revision: projection.revisionKnown ? projection.revision : undefined,
23 digest: projection.digest || undefined,
24 };
25 }
26
26 lines TYPESCRIPT