LAYER / src /lib /test-archive.ts
Claude
Add explicit 'End Session' to archive test runs as a documented decision
9cf05d5 unverified
Raw
History Blame Contribute Delete
1.55 kB
// Archive for ended Test Bench sessions. Persisted to the browser's
// localStorage — this is single-browser, client-side retention, not a
// shared server database. A "session" is every run since the last time
// the user pressed End Session; nothing is written until that deliberate
// action, so the record reflects a documented decision, not a side effect
// of each individual run.
export type ArchiveStatus = "done" | "blocked" | "expired";
export type ArchiveEntry = {
id: string;
timestamp: number;
pipelineName: string;
targetLabel: string;
status: ArchiveStatus;
checksum: string;
byteSize: number;
loc: number;
nodeCount: number;
runsInSession: number;
performanceSummary: string;
log: string[];
};
const STORAGE_KEY = "layer.testbench.archive";
const MAX_ENTRIES = 200;
export function loadArchive(): ArchiveEntry[] {
if (typeof window === "undefined") return [];
try {
const raw = window.localStorage.getItem(STORAGE_KEY);
if (!raw) return [];
const parsed = JSON.parse(raw);
return Array.isArray(parsed) ? (parsed as ArchiveEntry[]) : [];
} catch {
return [];
}
}
export function saveArchiveEntry(entry: ArchiveEntry): void {
if (typeof window === "undefined") return;
const next = [entry, ...loadArchive()].slice(0, MAX_ENTRIES);
try {
window.localStorage.setItem(STORAGE_KEY, JSON.stringify(next));
} catch {
// Storage full or unavailable — the run itself already succeeded, so
// fail the archive write silently rather than blocking the user.
}
}